如何从单个数组创建多个数组?
How to create multiple array from single array?
我有一种情况,我在一个数组中获取数据,我必须将其转换为多个数组...就像 Matrix。
const array = [1,2,3,4,5,6,7,8,9]
输出应该是:
[[1,3],[2,4],[5,7],[6,8],[9]]
这是我目前所拥有的:
let i = 0;
const add = [];
while (i < list.length) {
add.push([list[i], list[i + 2]]);
i = i + 1;
}
return add;
也许试试这个?
let i = 0;
const list = [1,2,3,4,5,6,7,8,9]
const add = [];
let newarr =[]
while (i < list.length) {
add.push([list[i], list[i + 2]]);
add.push([list[i+1],list[i+3]])
i +=4;
}
//remove undefined item from the array
newarr = add.map(arr=>arr.filter(item =>item != undefined)).filter(item=>item!="")
console.log(newarr)
const array = [1,2,3,4,5,6,7,8,9];
const visitedIndex = [];
const newArray = [];
array.forEach((element, i) => {
if (!visitedIndex.includes(i)) {
if (array[i+2]) {
newArray.push([array[i], array[i+2]])
} else {
newArray.push([array[i]])
}
visitedIndex.push(i);
visitedIndex.push(i+2);
};
});
Lodash chunk 如果你不介意的话。
或者你可以在 vanila js 中使用递归方法。
const array = [1,2,3,4,5,6,7,8,9];
const chunk = (arr, n) => arr.length ? [arr.slice(0, n), ...chunk(arr.slice(n), n)] : [];
console.log(chunk(array, 2));
.as-console-wrapper{min-height: 100%!important; top: 0}
我想这一定能解决你的问题。
function chunkArrayInGroups(arr, size) {
let newArr = [];
for (let i = 0; i < arr.length; i += size) {
newArr.push(arr.slice(i, i + size));
}
console.log(newArr)
return newArr;
}
chunkArrayInGroups([1,2,3,4,5,6,7,8,9],2)
这会将我们较大的数组分成大小为 2 小于 2 的块数组。
我有一种情况,我在一个数组中获取数据,我必须将其转换为多个数组...就像 Matrix。
const array = [1,2,3,4,5,6,7,8,9]
输出应该是:
[[1,3],[2,4],[5,7],[6,8],[9]]
这是我目前所拥有的:
let i = 0;
const add = [];
while (i < list.length) {
add.push([list[i], list[i + 2]]);
i = i + 1;
}
return add;
也许试试这个?
let i = 0;
const list = [1,2,3,4,5,6,7,8,9]
const add = [];
let newarr =[]
while (i < list.length) {
add.push([list[i], list[i + 2]]);
add.push([list[i+1],list[i+3]])
i +=4;
}
//remove undefined item from the array
newarr = add.map(arr=>arr.filter(item =>item != undefined)).filter(item=>item!="")
console.log(newarr)
const array = [1,2,3,4,5,6,7,8,9];
const visitedIndex = [];
const newArray = [];
array.forEach((element, i) => {
if (!visitedIndex.includes(i)) {
if (array[i+2]) {
newArray.push([array[i], array[i+2]])
} else {
newArray.push([array[i]])
}
visitedIndex.push(i);
visitedIndex.push(i+2);
};
});
Lodash chunk 如果你不介意的话。
或者你可以在 vanila js 中使用递归方法。
const array = [1,2,3,4,5,6,7,8,9];
const chunk = (arr, n) => arr.length ? [arr.slice(0, n), ...chunk(arr.slice(n), n)] : [];
console.log(chunk(array, 2));
.as-console-wrapper{min-height: 100%!important; top: 0}
我想这一定能解决你的问题。
function chunkArrayInGroups(arr, size) {
let newArr = [];
for (let i = 0; i < arr.length; i += size) {
newArr.push(arr.slice(i, i + size));
}
console.log(newArr)
return newArr;
}
chunkArrayInGroups([1,2,3,4,5,6,7,8,9],2)
这会将我们较大的数组分成大小为 2 小于 2 的块数组。