2013-05-17 26 views
0

有一个数组,Json变量作为参数传递给该数组。在循环过程中,json可变添加了额外的子变量,每个循环都赋予新的值。为循环中的Json数据赋值以取代旧数据

var getDataArrList = function (arrList, itemData, forControlMode) { 
     $(arrList).each(function (index, value) { 
      itemData.itemCaption = value; 
      itemData.itemValue = value.toLowerCase(); 
      returnArrSet.push({ name: value, value: itemData }) 
     }) 
    } 

其中arrList是arrList = [ “打开”, “发行日期”];和itemData是Json变量。

Itemdata将已经有两个数据。 itemData.screenTitle和itemData.otherDetails。这对于既arrList

的数组元素在第一环路cylce保持相同设置ItemData将有像

itemData = { 
     itemData.screenTitle = 'some value', 
     itemData.otherDetails = 'some details' 
     itemData.itemCaption = "Caption1", 
     itemData.itemValue = "Items list1" 
     } 

这些值被分配的数据,并推动像returnArrSet.push({ name: value, value: itemData })

在第二循环项目数据应该有像

itemData = { 
     itemData.screenTitle = 'some value', 
     itemData.otherDetails = 'some details' 
     itemData.itemCaption = "Caption 2", 
     itemData.itemValue = "Items list 2" 
     } 

returnArrSet秒环形元件应具有新鲜值标题2和项目列表2,但该循环分配值到第二元件,以及在returnArrSet第一元件。请帮我找到替代解决方案

回答

1

itemData是对一个对象的引用,这意味着所有的引用都指向同一组数据。通过为阵列创建一个新对象,这很容易解决。

var getDataArrList = function (arrList, itemData, forControlMode) { 
    $(arrList).each(function (index, value) { 
     returnArrSet.push({ name: value, 
     value: { 
       screenTitle : itemData.screenTitle, 
       otherDetails : itemData.otherDetails, 
       itemCaption : value, 
       itemValue : value.toLowerCase() 
       } 
    }) 
    }) 
} 
+1

我已经遇到这个自己..引用可以是祝福和诅咒。 –