Кодирование: сведение массива в Javascript
Сведение массива. Сведение массива означает получение массива, который может содержать вложенные массивы (т. е. массивы внутри массивов), и преобразование его в единый одномерный массив. Другими словами, он включает в себя удаление всех вложенных массивов и объединение их элементов в один массив.
Мы обсудим несколько решений.
Решение 1. Использование рекурсии
Код определяет вызываемую функцию FlattenArray, которая принимает массив в качестве аргумента. Цель функции — взять вложенный массив и вернуть его сглаженную версию. Например, если введено значение [1, 2, [3, 4]], функция должна вернуть значение [1, 2, 3, 4].
Функция начинается с создания вызываемого пустого массива, который будет использоваться для хранения сглаженной версии входного массива. Затем он входит в forцикл, который будет перебирать каждый элемент входного массива.
Для каждого элемента входного массива функция проверяет, является ли сам элемент массивом, используя метод Array.isArray. Если элемент является массивом, функция рекурсивно вызывает себя с вложенным массивом в качестве аргумента и использует метод concatдля объединения сплющенного вложенного массива с тем flatArray, который был создан в начале функции.
Если элемент не является массивом, функция просто помещает элемент в flatArray.
После обработки всех элементов входного массива функция возвращает значение flatArray.
Полный код:
// Flatten Array
function FlattenArray(arr) {
var flatArray = []
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatArray = flatArray.concat(FlattenArray(arr[i]))
} else {
flatArray.push(arr[i])
}
}
return flatArray
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))
Решение 2. Использование метода уменьшения
function flattenArray(arr) {
return arr.reduce(function(flatArray, current) {
if (Array.isArray(current)) {
return flatArray.concat(flattenArray(current));
} else {
return flatArray.concat(current);
}
}, []);
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
Метод reduceпринимает два аргумента: функцию обратного вызова и начальное значение для аккумулятора. В этом случае аккумулятор представляет собой пустой массив, который будет использоваться для построения сглаженной версии входного массива.
Функция обратного вызова принимает два аргумента: текущее обрабатываемое значение (которым по очереди будет каждый элемент входного массива) и текущее значение аккумулятора.
Внутри функции обратного вызова мы проверяем, является ли текущее значение массивом, используя Array.isArray. Если это массив, мы вызываем flattenArrayрекурсивно, чтобы сгладить вложенный массив, а затем сцепить сплющенный массив с аккумулятором, используя метод concat.
Если текущее значение не является массивом, мы просто объединяем его с аккумулятором, используя concat.
Наконец, reduceметод возвращает окончательное значение аккумулятора, которое будет сглаженной версией входного массива.
С помощью этого кода вы должны получить тот же результат, что и раньше: [1, 2, 3, 4, 5, 6, 7, 8, 9].
Если вы хотите узнать больше о программировании на Javascript, обязательно подпишитесь на меня, чтобы получить дополнительные фрагменты кода и примеры. Я буду делиться ценной информацией и советами о том, как освоить язык и улучшить свои навыки разработчика. Итак, следите за обновлениями, и давайте продолжим учиться вместе.
Спасибо за чтение. Приятного обучения
Объяснение многопоточности и многопроцессорности в Python Самый простой способ доступа к базе данных в JAVA Наиболее часто задаваемый вопрос на собеседовании на основе Java8 Stream — часть 1 Apache Maven — кратко
![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































