1. /**
  2. * Compacts an array of arrays into a single array. Handles edge cases like empty arrays and nested non-array elements.
  3. * @param {Array<Array<any>>} arr The array of arrays to compact.
  4. * @returns {Array<any>} A single flattened array. Returns an empty array if input is not an array or is null/undefined.
  5. */
  6. function compactArrays(arr) {
  7. if (!Array.isArray(arr)) {
  8. return []; //Handle non array inputs
  9. }
  10. let result = [];
  11. for (let i = 0; i < arr.length; i++) {
  12. const element = arr[i];
  13. if (Array.isArray(element)) {
  14. // Recursively compact nested arrays
  15. result = result.concat(compactArrays(element));
  16. } else if (element !== undefined && element !== null) {
  17. // Handle non-array elements (avoid adding undefined/null)
  18. result.push(element);
  19. }
  20. // else ignore undefined or null
  21. }
  22. return result;
  23. }

Add your comment