Как разбить массив на несколько массивов js
Можно использовать метод reduce()
для разделения исходного массива на несколько массивов, основываясь на некотором условии.
Пример. Разделим массив чисел на два массива - один сочетает в себе все четные числа, а другой - все нечетные числа.
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const [evenNumbers, oddNumbers] = numbers.reduce(
(acc, val) => {
acc[val % 2].push(val);
return acc;
},
[[], []]
);
console.log(evenNumbers); // [2, 4, 6, 8]
console.log(oddNumbers); // [1, 3, 5, 7, 9]
Здесь мы использовали reduce()
, чтобы создать два массива внутри массива acc
, один для четных чисел и другой для нечетных. Затем мы проходим по каждому числу в исходном массиве и добавляем его в соответствующий массив внутри acc
на основе остатка от деления на 2.
Затем мы деструктурируем результат reduce()
в две переменные evenNumbers
и oddNumbers
, чтобы получить два отдельных массива, содержащих только четные и нечетные числа соответственно.
Для того что бы получить "срез" массива, можно воспользоваться встроенным методом slice
const nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(nums.slice(3));
// Вывод: [ 4, 5, 6, 7, 8, 9, 10 ]
console.log(nums.slice(2, 6));
// Вывод: [ 3, 4, 5, 6 ]
console.log(nums.slice(-2));
// Вывод: [ 9, 10 ]
console.log(nums.slice());
// Вывод: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Для того чтобы "нарезать" массив на одинаковые части, можно воспользоваться методом chunk из библиотеки lodash:
_.chunk(['a', 'b', 'c', 'd'], 2);
// Вывод: [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);
// Вывод: [['a', 'b', 'c'], ['d']]