如何在Javascript中的某些限制后打破数组

时间:2015-11-26 14:40:54

标签: javascript arrays loops

以下是我的阵列,我需要打破部分,即分成2部分,如下所示 -

要迭代的数组 -

[
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
]

所需的输出 -

[
 {week1: [{elem: 1},{elem: 2}]},
 {week2: [{elem: 3},{elem: 4}]},
 {week3: [{elem: 5},{elem: 6}]},
 {week4: [{elem: 7},{elem: 8}]},
 {week5: [{elem: 9}]},
]

以下是我正在尝试的代码,但不知何故,让我知道我在这里做错了什么 -

我的代码 -

var myArr = [
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
];

var arrayBreakNum = 2;
var newArr = [];
var weekNum = 1;

for(var i=1; i<= myArr.length; i++) {
    newArr.['week'+weekNum].push(myArr[i]);
    if(i%2 == 0)
        weekNum = weekNum + 1;
}

console.log(newArr);

2 个答案:

答案 0 :(得分:3)

您需要更改一些内容:

这里有一个语法错误:

newArr.['week'+weekNum].push(myArr[i]);

更改为:

newArr['week'+weekNum].push(myArr[i]);

您正在尝试推送到尚未在此处初始化的阵列:

newArr.['week'+weekNum].push(myArr[i]);

更改为:

newArr['week'+weekNum] = [];
for(var i=1; i<= myArr.length; i++) {
    newArr['week'+weekNum].push(myArr[i]);
    if(i%2 == 0){
        weekNum = weekNum + 1;
        newArr['week'+weekNum] = [];
    }
}

工作示例: http://jsfiddle.net/6e6d3fuv/

答案 1 :(得分:1)

var myArr = [
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
];

var arrayBreakNum = 2;
var newArr = [];
var weekNum = 1;

for(var i=1; i<= myArr.length; i++) {
    //you need to create an empty array
    if(!newArr['week'+weekNum]) {
        newArr['week'+weekNum] = [];
    }

    newArr['week'+weekNum].push(myArr[i]); //you had an unessecary . in this line
    if(i%2 == 0) {
        weekNum = weekNum + 1;
    }
}

console.log(newArr);