Перебор массива с шагом 2
Есть массив из элементов которого нужно создать двумерный массив с шагом 2.
input
let elems = [ '1', '2', '3', '4']
output
let newarr = [
[1,3],
[2,4]
]
Сам додумался до чего-то такого, но получается массив с 4 элементами, а не с двумя
let newarr = []
let elems = [ '1', '2', '3', '4']
for (var i=0; i <= 3; i=i+1) {
newarr.push(Array.from(elems[i]))
}
for (var i=1; i <= 3; i=i+2) {
newarr.push(Array.from(elems[i]))
}
Ответы (2 шт):
Автор решения: highpassion
→ Ссылка
Можно сформировать массив так:
Вы проходитесь по оригинальному массиву с помощью forEach(), нечетные индексы идут в первый массив, четные - во второй (условие с оператором остатка я задал тернарным оператором для удобочитаемости). После этого добавляем оба новых массива в конечный массив.
let newarr = [],
elems = ['1', '2', '3', '4'],
f = [],
s = [];
elems.forEach((n, i) => ((i % 2) ? s : f).push(n));
newarr.push(f, s);
Автор решения: Qwertiy
→ Ссылка
Вот 3 способа - выбирай:
let elems = [1, 2, 3, 4]
let a = [], b = []
for (let i=0; i<elems.length; ++i) {
(i & 1 ? b : a).push(elems[i])
}
console.log(a)
console.log(b)
let elems = [1, 2, 3, 4]
let a = [], b = []
elems.forEach((x, i) => (i & 1 ? b : a).push(x))
console.log(a)
console.log(b)
let elems = [1, 2, 3, 4]
let [a, b] = elems.reduce((res, x, i) => (res[i&1].push(x), res), [[], []])
console.log(a)
console.log(b)