/
Вопросы и ответы
/
JavaScript
/

Как разбить массив на несколько массивов js

Как разбить массив на несколько массивов js

4 года назад

Человек-Молекула

Ответы

2

Можно использовать метод 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, чтобы получить два отдельных массива, содержащих только четные и нечетные числа соответственно.

2 года назад

Aleksey

0

Для того что бы получить "срез" массива, можно воспользоваться встроенным методом 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']]

3 года назад

Вячеслав Межуревский