/**
* Compacts an array of arrays into a single array. Handles edge cases like empty arrays and nested non-array elements.
* @param {Array<Array<any>>} arr The array of arrays to compact.
* @returns {Array<any>} A single flattened array. Returns an empty array if input is not an array or is null/undefined.
*/
function compactArrays(arr) {
if (!Array.isArray(arr)) {
return []; //Handle non array inputs
}
let result = [];
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
if (Array.isArray(element)) {
// Recursively compact nested arrays
result = result.concat(compactArrays(element));
} else if (element !== undefined && element !== null) {
// Handle non-array elements (avoid adding undefined/null)
result.push(element);
}
// else ignore undefined or null
}
return result;
}
Add your comment