Tengo un objeto de lista como el siguiente
[{a:"0"},{a:"1"},....{a:"39"}]Quiero tener una lista como la siguiente. Necesito un resultado como el siguiente.
{ "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"}], }Gracias por ayudarme.
Puedes usar el siguiente código:
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) Si también desea mantener los items inmutables, puede copiarlos en otra matriz antes del ciclo while , como este const copyItems = [...items] y usar copyItems in while .
Puedes usar una reduce para lograr esto.
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; }, {});Creo que esto podría ser lo que estás buscando. Esto dividirá la matriz grande en otras más pequeñas y almacenará cada matriz con un tamaño de 4 en 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]]