Как перебрать многомерный массив, что б получить отдельный массив JS?

Для перебора многомерного массива и получения отдельного массива в JavaScript, вы можете использовать различные методы и подходы. Ниже я рассмотрю несколько подходов к данной проблеме.

1. Использование рекурсии:
Рекурсия — это процесс, в котором функция вызывает саму себя. Вы можете рекурсивно перебирать каждый элемент массива и проверять, является ли этот элемент массивом. Если да, то рекурсивно вызывать функцию для данного подмассива. Если нет, то добавлять элемент в отдельный массив.

   function flattenArray(arr, result = []) {
     for (let i = 0; i < arr.length; i++) {
       if (Array.isArray(arr[i])) {
         flattenArray(arr[i], result);
       } else {
         result.push(arr[i]);
       }
     }
     return result;
   }

   const multiDimensionalArray = [[1, 2], [3, 4, [5, 6]], 7, [8, [9, [10]]]];
   const flattenedArray = flattenArray(multiDimensionalArray);
   console.log(flattenedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

В этом примере мы создали рекурсивную функцию flattenArray, которая перебирает каждый элемент исходного массива arr и вызывает себя для каждого подмассива. Если элемент не является массивом, то он добавляется в отдельный массив result. В конце функция возвращает полученный отдельный массив.

2. Использование метода flat():
Метод flat() в JavaScript позволяет "разгладить" многомерный массив до одномерного массива. Вы можете использовать этот метод, чтобы получить отдельный массив.

   const multiDimensionalArray = [[1, 2], [3, 4, [5, 6]], 7, [8, [9, [10]]]];
   const flattenedArray = multiDimensionalArray.flat(Infinity);
   console.log(flattenedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

В этом примере мы вызываем метод flat() на исходном массиве multiDimensionalArray с аргументом Infinity, чтобы разгладить все уровни многомерного массива до одномерного массива.

3. Использование методов reduce() и оператора concat():
Вы можете использовать метод reduce() для перебора многомерного массива и оператор concat() для объединения элементов в отдельный массив.

   const multiDimensionalArray = [[1, 2], [3, 4, [5, 6]], 7, [8, [9, [10]]]];
   const flattenedArray = multiDimensionalArray.reduce((acc, curr) => acc.concat(curr), []);
   console.log(flattenedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

В этом примере мы используем метод reduce() для перебора массива multiDimensionalArray и оператор concat() для объединения всех элементов в отдельный массив acc. Изначально массив acc пустой.

Все эти подходы справятся с перебором многомерного массива и созданием отдельного массива в JavaScript. Вы можете выбрать подход, который наиболее соответствует вашим потребностям и требованиям вашего проекта.