从 javascript 中的主列表创建自定义列表
Create custom list from main list in javascript
我有一个如下所示的列表对象
[{a:"0"},{a:"1"},....{a:"39"}]
我想要一个像这样的列表 below.I 需要像下面这样的结果。
{
"list1":[{a:"0"},{a:"1"},{a:"2"},{a:"3"}],
"list2":[{a:"4"},{a:"5"},{a:"6"},{a:"7"}],
.
.
.
"list10":[{a:"36"},{a:"37"},{a:"38"},{a:"39"}],
}
谢谢你的帮助。
您可以使用 reduce
来实现此目的
const items = [{ a: "0" }, { a: "1" }, { a: "2" }, { a: "3" }, { a: "4" }, { a: "5" }, { a: "6" }, { a: "7" }];
items.reduce((accum, curr, index) => {
const key = `list${1 + Math.floor(index / 4)}`;
accum[key] = accum[key] || [];
accum[key].push(curr);
return accum;
}, {});
我相信这可能就是您要找的。这会将大数组拆分为较小的数组,并将每个大小为 4 的数组存储在 arrayOfArrays 中。
var bigarray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var size = 4; var arrayOfArrays = [];
for (var i=0; i<bigarray.length; i+=size) {
arrayOfArrays.push(bigarray.slice(i,i+size));
}
console.log(arrayOfArrays); // [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15]]
您可以使用 slice()
数据...
const arr = [{a:"0"},{a:"1"},{a:"2"},{a:"3"},{a:"4"},{a:"5"},{a:"6"},{a:"7"}];
const arr2 = [];
var i,j;
for (i = 0; i < arr.length; i = i + 4) {
arr2.push(arr.slice(i, i + 4));
}
console.log(arr2);
您可以使用以下代码:
const items = [{a: "0"}, {a: "1"}, {a: "2"}, {a: "3"}, {a: "4"}, {a: "5"}, {a: "6"}, {a: "7"}, {a:"8"}, {a:"9"}, {a:"10"}];
let newItems = {};
let i = 1;
while(items.length){
newItems[`list${i}`] = items.splice(0,4);
i++;
}
console.log(newItems)
如果你想保持 items
不变,你可以在 while
循环之前将它复制到另一个数组中,像这样 const copyItems = [...items]
并在 [=12] 中使用 copyItems
=].
var data = [{a:"0"},{a:"1"},{a:"2"},{a:"3"}, {a:"4"},{a:"5"},{a:"6"},{a:"7"},{a:"8"},{a:"9"}]
const sliceData = (data, size) => {
var result = [];
for(var i = 0; i < data.length; i += size){
result.push(data.slice(i, i + size));
}
return result;
}
console.log(sliceData(data, 4));
结果
[
[ { a: '0' }, { a: '1' }, { a: '2' }, { a: '3' } ],
[ { a: '4' }, { a: '5' }, { a: '6' }, { a: '7' } ],
[ { a: '8' }, { a: '9' } ]
]
Lodash,如果你不介意的话
使用_.chunk将数组拆分成长度为size的组。
import _ from 'lodash';
data = [{a:"0"},{a:"1"},{a:"2"},{a:"3"}, {a:"4"},{a:"5"},{a:"6"},{a:"7"},{a:"8"},{a:"9"}];
const size = 4;
const result = _.chunk(data, size)
.reduce((acc, item, index) => ({ ...acc, [`list${index + 1}`]: item }), {});
console.log(result);
//{list1: Array(4), list2: Array(4), list3: Array(2)}
我有一个如下所示的列表对象
[{a:"0"},{a:"1"},....{a:"39"}]
我想要一个像这样的列表 below.I 需要像下面这样的结果。
{
"list1":[{a:"0"},{a:"1"},{a:"2"},{a:"3"}],
"list2":[{a:"4"},{a:"5"},{a:"6"},{a:"7"}],
.
.
.
"list10":[{a:"36"},{a:"37"},{a:"38"},{a:"39"}],
}
谢谢你的帮助。
您可以使用 reduce
来实现此目的
const items = [{ a: "0" }, { a: "1" }, { a: "2" }, { a: "3" }, { a: "4" }, { a: "5" }, { a: "6" }, { a: "7" }];
items.reduce((accum, curr, index) => {
const key = `list${1 + Math.floor(index / 4)}`;
accum[key] = accum[key] || [];
accum[key].push(curr);
return accum;
}, {});
我相信这可能就是您要找的。这会将大数组拆分为较小的数组,并将每个大小为 4 的数组存储在 arrayOfArrays 中。
var bigarray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var size = 4; var arrayOfArrays = [];
for (var i=0; i<bigarray.length; i+=size) {
arrayOfArrays.push(bigarray.slice(i,i+size));
}
console.log(arrayOfArrays); // [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15]]
您可以使用 slice()
数据...
const arr = [{a:"0"},{a:"1"},{a:"2"},{a:"3"},{a:"4"},{a:"5"},{a:"6"},{a:"7"}];
const arr2 = [];
var i,j;
for (i = 0; i < arr.length; i = i + 4) {
arr2.push(arr.slice(i, i + 4));
}
console.log(arr2);
您可以使用以下代码:
const items = [{a: "0"}, {a: "1"}, {a: "2"}, {a: "3"}, {a: "4"}, {a: "5"}, {a: "6"}, {a: "7"}, {a:"8"}, {a:"9"}, {a:"10"}];
let newItems = {};
let i = 1;
while(items.length){
newItems[`list${i}`] = items.splice(0,4);
i++;
}
console.log(newItems)
如果你想保持 items
不变,你可以在 while
循环之前将它复制到另一个数组中,像这样 const copyItems = [...items]
并在 [=12] 中使用 copyItems
=].
var data = [{a:"0"},{a:"1"},{a:"2"},{a:"3"}, {a:"4"},{a:"5"},{a:"6"},{a:"7"},{a:"8"},{a:"9"}]
const sliceData = (data, size) => {
var result = [];
for(var i = 0; i < data.length; i += size){
result.push(data.slice(i, i + size));
}
return result;
}
console.log(sliceData(data, 4));
结果
[
[ { a: '0' }, { a: '1' }, { a: '2' }, { a: '3' } ],
[ { a: '4' }, { a: '5' }, { a: '6' }, { a: '7' } ],
[ { a: '8' }, { a: '9' } ]
]
Lodash,如果你不介意的话
使用_.chunk将数组拆分成长度为size的组。
import _ from 'lodash';
data = [{a:"0"},{a:"1"},{a:"2"},{a:"3"}, {a:"4"},{a:"5"},{a:"6"},{a:"7"},{a:"8"},{a:"9"}];
const size = 4;
const result = _.chunk(data, size)
.reduce((acc, item, index) => ({ ...acc, [`list${index + 1}`]: item }), {});
console.log(result);
//{list1: Array(4), list2: Array(4), list3: Array(2)}