Цель — реализовать собственный метод myFlat() на Array.prototype, который разворачивает один уровень вложенности — объединяет вложенные массивы в один плоский массив.
Array.prototype.myFlat = function () {
return this.reduce(
(acc, val) => acc.concat(val),
[]
);
};
Array.prototype.myFlat — прикрепляет метод непосредственно ко всем массивам через цепочку прототиповreduce() перебирает каждый элемент, накапливая результаты в один выходной массив, начиная с []concat() — ключевая операция — когда val это обычное значение, оно добавляется; когда val это массив, его элементы автоматически раскладываются в аккумулятор[1, [2, 3], [4, [5]]].myFlat();
// Результат: [1, 2, 3, 4, [5]]
Заметь, что разворачивается только один уровень — глубоко вложенный [5] остаётся массивом.
Array.prototype.flat() с глубиной по умолчанию 1Array.prototype может вызвать конфликты имён с существующими или будущими встроенными методами — используй с осторожностью в продакшн-кодеМетод concat() автоматически раскрывает элементы массива в аккумулятор, поэтому один уровень вложенности сплющивается без явной рекурсии.
Новый — ещё не проверен сообществом
Вы