2014-09-10 88 views
0

我有一個循環對象的函數。有數組/對象循環的問題

我想在表格上的數據

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

原始數據看起來像什麼? – Teemu 2014-09-10 18:11:09

+0

你們都使用['delete'](http://perfectionkills.com/understanding-delete/)和['for in' loops](http://stackoverflow.com/q/500504/1048572)非常錯誤。 – Bergi 2014-09-10 18:24:01

回答

0

"delete" deletes a property of the object, not the object. dataArray中實際上並沒有被刪除,因此,將被附加到針對具有相同的名稱/索引的下一組中的任何元件/不管從先前組的那些。

使用

dataArray = []; 

curResultGroupDCT = []; 

代替。

+0

謝謝你@HamHamJ和@ folkol,它解決了我的問題=) – anders 2014-09-11 07:03:06

0

delete不符合您的想法。

您不斷添加到相同的數組中,將'delete dataArray'替換爲'dataArray = []'以清除它。

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