Javascript 基于具有新键和值的列表向数组添加新对象
我有一个复选框,可以从列表中选择对象。要使选择可识别,我希望使用选定值的标签向选定对象添加新的keyvalue 我尝试了以下方法:Javascript 基于具有新键和值的列表向数组添加新对象,javascript,arrays,object,filter,push,Javascript,Arrays,Object,Filter,Push,我有一个复选框,可以从列表中选择对象。要使选择可识别,我希望使用选定值的标签向选定对象添加新的keyvalue 我尝试了以下方法: var checkCheckboxOnOff = [{"fieldName":"Categorie__c","picklistValue":"Techniek"},{"fieldName":"Regio__c","picklistValue":"Midden"}] 我通过CheckBoxOnOff循环,从列表中选择对象: opleidingfilter = ser
var checkCheckboxOnOff = [{"fieldName":"Categorie__c","picklistValue":"Techniek"},{"fieldName":"Regio__c","picklistValue":"Midden"}]
我通过CheckBoxOnOff循环,从列表中选择对象:
opleidingfilter = serverList.filter(function(item) { return item[checkCheckboxOnOff[i].fieldName] == checkCheckboxOnOff[i].picklistValue});
在列表中循环时,我向选定对象添加一个键和值,并将它们推入过滤器数组:
opleidingfilter.forEach(function(n) {n.arrayPicklist = checkCheckboxOnOff.fieldName});
Array.prototype.push.apply(filter,opleidingfilter[i]);
我的问题是,当我两次选择一个对象时,两个选定的对象都会用最后一个键和值进行更新。我的期望是,当两次选择一个对象时,我最终得到两个不同的值
例如:
第一选择:
[{"Id":"120"},{"Id":"121"}]
第二选择
[{"Id":"123"},{"Id":"121"}]
预期:
[{"Id":"120","arrayPicklist":"Categorie__c"},
{"Id":"121","arrayPicklist":"Categorie__c"},{"Id":"123","arrayPicklist":"Regio__c"},
{"Id":"121","arrayPicklist":"Regio__c"}]
当前结果
[{"Id":"120","arrayPicklist":"Categorie__c"},
{"Id":"121","arrayPicklist":"Regio__c"},{"Id":"123","arrayPicklist":"Regio__c"},
{"Id":"121","arrayPicklist":"Regio__c"}]
fiddle中的值似乎未定义请参见:您的问题在
n.arrayPicklist = checkCheckboxOnOff.fieldName
您试图访问数组上的fieldname属性,而不是CheckBoxOnOff数组中的索引
用这个替换那行
opleidingfilter.forEach(function(n,i) {n.arrayPicklist = checkCheckboxOnOff[i].fieldName});
这样,您就可以访问迭代器中的index属性,并可以访问checkboxonoff数组中的每个项