一个集合返回11项如下;
( 1, "Ball", "Result1")
( 2, "Ball", " Result2")
( 3, "Ball", " Result3")
( 4, "Ball", " Result4")
( 5, "Ball", " Result5")
( 6, "Ball", " Result6")
( 7, "Ball", " Result7")
( 8, "Ball", " Result8")
( 9, "Pool", " Pool 1")
( 10, "Pool", " Pool 2")
( 11, "Pool", " Pool 3")
我想存储它们,将它们分为四个项目......这样我的数组就像这样
var data = [];
data.push({
myclass: "First4",
schedule: [ {
id : '1',
gameType: 'Ball',
result: 'Result11'
}, {
id: '2',
gameType: 'Ball',
result: 'Result2'
},........... ]
});
//second group
data.push({
divClass : "second4",
items : [ {
id : '5'
gameType: 'Ball',
result: 'Result5'
}, {
id : ''
gameType: 'Ball',
result: 'Result6
} ]
});
如何编写for循环以便我可以动态地获得相同的结果,而不是手动编写推送
for(var i = 0; i < collLength; i++){
// do push 1 with first four //data.push(class, sheculde first 4 items, result)
// do second push with second four
// do third push with the remaining
}
答案 0 :(得分:1)
var data = [];
for(var i = 0; i < collLength; i+=4) {
data.push({
divClass: "group" + (i / 4),
items: collection.slice(i, i + 4).map(function(item) {
return {id:item[0], gameType:item[1], result:item[2]};
})
});
}
答案 1 :(得分:0)
var indata = [...]; // this is filled with your list of objects.
var outdata = [ ];
var n = indata.length;
for (var i = 0; i < n; i += 4)
{
outdata.push({
class: 'group' + outdata.length,
items: indata.slice(i, i + 4)
});
}
答案 2 :(得分:0)
var indata = [...]; // this is filled with your list of objects.
var outdata = [ ];
function mapper(element, i)
{
var j = Math.floor(i / 4);
if (outdata[j] == undefined)
outdata[j] = { class: 'group' + j, items: [ ] };
outdata[j].items.push(element);
}
indata.map(mapper);
答案 3 :(得分:0)
这是使用.reduce()
的方式。
var data = collection.reduce(function(arr, obj, i) {
return i % 4 ? arr :
arr.concat({
divClass: "group" + (i / 4),
items: collection.slice(i, i + 4).map(function(item) {
return {id:item[0], gameType:item[1], result:item[2]};
})
});
}, []);