I have a list object like below
[{a:"0"},{a:"1"},....{a:"39"}]
I want to have a list like the one below.I need a result like the below.
{
"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"}],
}
Thanks for help me.
You can use below code:
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)
If you want too kep the items immutable you can copy it into another array before while loop, like this const copyItems = [...items] and using copyItems in while.
You can use a reduce to achieve this
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;
}, {});
I believe this might be what you're looking for. This will split the big array into smaller ones and store each array with a size of 4 in the 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]]