我有一个复选框,可以从列表中选择对象。为了使选择可识别,我想为所选对象添加一个新的键值,并使用所选值的标签。
我尝试了以下内容:
var checkCheckboxOnOff = [{"fieldName":"Categorie__c","picklistValue":"Techniek"},{"fieldName":"Regio__c","picklistValue":"Midden"}]
我通过checkCheckboxOnOff循环,从列表中选择对象:
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]);
我的问题是,当我选择一个对象两次时,我最终会使用最后一个Key和值更新所选对象。我的期望是两次选择1个对象后,最终得到2个不同的值。
实施例: 第一选:
[{"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"}]
似乎未定义小提琴中的值,请参阅:https://jsfiddle.net/Lcg1qca3/18/
答案 0 :(得分:0)
你的问题在
n.arrayPicklist = checkCheckboxOnOff.fieldName
您正在尝试访问数组上的fieldname属性,而不是checkCheckboxOnOff数组中的索引。
用此
替换该行opleidingfilter.forEach(function(n,i) {n.arrayPicklist = checkCheckboxOnOff[i].fieldName});
这样您就可以访问迭代器中的index属性,并可以访问checkCheckboxOnOff数组中的每个项目。