将值分配给循环中的Json数据正在替换旧数据

时间:2013-05-17 11:58:00

标签: jquery arrays json

有一个数组,Json变量作为参数传递给它。在循环期间,json ariable添加了额外的子变量,在每次循环时为其分配新值。

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 = [“Open”,“Released”]; 和itemData是Json变量。

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

的两个数组元素,它们保持相同

在第一个循环中,itemData将具有类似

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

这些值的分配和推送方式与returnArrSet.push({ name: value, value: itemData })

类似

On Second loop cylce,itemData应该有像

这样的数据
itemData = { 
         itemData.screenTitle = 'some value',
         itemData.otherDetails = 'some details' 
         itemData.itemCaption = "Caption 2",  
         itemData.itemValue = "Items list 2"  
         }

returnArrSet 中,第二个循环元素应该有新的值Caption 2和Items list 2但是循环将值赋给第二个元素以及 FIRST ELEMENT returnArrSet 即可。请帮助我找到替代解决方案

1 个答案:

答案 0 :(得分: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()
              }
    })
    })
}