Имеется массив
[0,1,2,3,4,5,6,7,8,9]
в итоге нужно разбить на подмассивы
[[0,1],[2,3,4],[5,6], [7,8,9]]
Метод ниже разделяет исходный массив на подмассивы такого вида
[[0,1],[2,3],[4,5],[6,7],[8,9]]
let arrayIndex = -1;
const newArr = [0,1,2,3,4,5,6,7,8,9].reduce((final, curr, i) => {
if (i%2 === 0) {
final.push([curr])
arrayIndex++;
} else {
final[arrayIndex].push(curr);
}
return final;
}, []);
Как доработать метод, чтобы добиться ожидаемого результата?
let arrayIndex = -1;
const newArr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].reduce((final, curr, i) => {
if (i % 5 === 0 || i % 5 === 2) {
final.push([curr])
arrayIndex++;
} else {
final[arrayIndex].push(curr);
}
return final;
}, []);
console.log(newArr);
Условия по сохранению целостности оригинального массива нет, если есть - можно скопировать массив перед сплайсами, а так - вот:
let arr = [0,1,2,3,4,5,6,7,8,9];
let result = [];
while (arr.length)
result.push(arr.splice(0, 2), arr.splice(0, 3))
console.log(JSON.stringify(result));
Или так:
let arr = [0,1,2,3,4,5,6,7,8,9];
let result = [2,3,2,3].map(i => arr.splice(0, i));
console.log(JSON.stringify(result));
PS: это конечно не универсально
Для произвольного набора длин подмассивов
const array = [0,1,2,3,4,5,6,7,8,9,10],
chunk = [2,3],
al = array.length, cl = chunk.length;
var ic = 0,
newArr = [],
i = 0;
while(i < al) {
// перебираем по кругу массив длин (chunck)
// и вырезаем подмассив с текущего индекса нужной длины методом slice
newArr.push(array.slice(i,i+chunk[ic]));
i += chunk[ic];
ic = (ic+1) % cl;
}
console.log(newArr)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня на сайте возникла проблема с кликами по ссылке DropdownЭта проблема возникла при подключении библиотеки отвечающую за вывод Tooltip-ов
Есть JS-скрипт, который выполняет следующую функцию: когда пользователь делает активными 3 чекбокса, пользователя перебрасывает на страницу...
У меня имеется собранный webpack и source map к немуЕсть ли возможность на основе моих файлов получить исходные? Если да, то каким образом?
При применении фильтров на товары Woocommerce происходит ошибка слайдераПосле того, как применяется один из фильтров на товары на странице магазина...