我有一个循环遍历对象的函数。
我想要表格上的数据
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);
}
答案 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;
}