遇到阵列/对象循环问题

时间:2014-09-10 18:05:57

标签: javascript jquery

我有一个循环遍历对象的函数。

我想要表格上的数据

group1:Array[1,2,3]

group2:Array[4,5,6]

group2:Array[7,8,9]

但我得到表格上的数据

group1:Array[1,2,3,4,5,6,7,8,9]

group2:Array[1,2,3,4,5,6,7,8,9]

group2:Array[1,2,3,4,5,6,7,8,9]

也就是说,它会复制我循环的第一个组中的值,然后将这些值添加到其他组中,我不希望这样。 它在函数调用中出错

for (var resultGroupElement in value[resultKey].DCTRecord.DCT[resultGroup])

我不知道如何修复它。你们是否知道如何解决这个问题?我试图删除变量而没有任何运气。

提前致谢。

getData: function(value) {
    var dataArray = [];
    var dataArrayHolder = [];

    for (var resultKey in value) {
        var stopTimeConverted = $.extend(true, {}, convertDateToWorkWithAllBrowsers(value[resultKey].StopTime));
        var resultGroups = value[resultKey].DCTRecord.DCT;
        for (var resultGroup in resultGroups) {
            for (var resultGroupElement in value[resultKey].DCTRecord.DCT[resultGroup]) {//Here is where its going wrong

                if (dataArray[resultGroupElement] != null) {
                    var curResultGroupDCT = dataArray[resultGroupElement];
                }
                else {
                    var curResultGroupDCT = [];
                }

                    curResultGroupDCT.push(
                            [
                                new Date(stopTimeConverted),
                                11
                            ]
                            );
                    dataArray[resultGroupElement] = curResultGroupDCT;
                    delete curResultGroupDCT;
            }
            dataArrayHolder[resultGroup] = dataArray;
            delete dataArray;
        }
    }
    console.log(dataArrayHolder);
}

2 个答案:

答案 0 :(得分:0)

"delete" deletes a property of the object, not the object. dataArray实际上并未被删除,因此将附加到下一组中与前一组具有相同名称/索引/任何内容的任何元素。

使用

dataArray = [];

curResultGroupDCT = [];

代替。

答案 1 :(得分:0)

delete没有按照您的想法行事。

您不断添加到同一个数组,替换'删除dataArray'使用' dataArray = []'清除它。

    dataArrayHolder[resultGroup] = dataArray;
    dataArray = []; //delete dataArray;
}