有一个数组,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 即可。请帮助我找到替代解决方案
答案 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()
}
})
})
}