Имеется массив
[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)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня на сайте возникла проблема с кликами по ссылке DropdownЭта проблема возникла при подключении библиотеки отвечающую за вывод Tooltip-ов
Есть JS-скрипт, который выполняет следующую функцию: когда пользователь делает активными 3 чекбокса, пользователя перебрасывает на страницу...
У меня имеется собранный webpack и source map к немуЕсть ли возможность на основе моих файлов получить исходные? Если да, то каким образом?
При применении фильтров на товары Woocommerce происходит ошибка слайдераПосле того, как применяется один из фильтров на товары на странице магазина...