0

有一个数组,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的两个数组元素,它保持不变

在第一个循环 cylce itemData 将具有类似的数据

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

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

在第二个循环 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 但循环将值分配给第二个元素以及returnArrSet中的第一个元素。请帮助我找到替代解决方案

4

1 回答 1

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()
              }
    })
    })
}
于 2013-05-17T12:21:10.917 回答