基于具有新键和值的列表将新对象添加到数组

Add new object to array based on list with new key and value

我有一个复选框,可以从列表中创建一个 select 对象。为了使 selection 可识别,我想向带有 selected 值标签的 selected 对象添加一个新的键值。

我尝试了以下方法:

var checkCheckboxOnOff = [{"fieldName":"Categorie__c","picklistValue":"Techniek"},{"fieldName":"Regio__c","picklistValue":"Midden"}]

我通过 checkCheckboxOnOff 循环,其中 select 个列表中的对象:

opleidingfilter = serverList.filter(function(item) { return item[checkCheckboxOnOff[i].fieldName] == checkCheckboxOnOff[i].picklistValue});

在列表中循环时,我将键和值添加到 selected 对象并将它们推送到过滤器数组中:

    opleidingfilter.forEach(function(n) {n.arrayPicklist = checkCheckboxOnOff.fieldName});
 Array.prototype.push.apply(filter,opleidingfilter[i]); 

我的问题是,当我 select 一个对象两次时,我最终用最后一个键和值更新了两个 selected 对象。我的期望是当 selected 1 个对象两次时,我最终得到 2 个不同的值。

示例: 第一个 select离子:

[{"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 中的值,请参阅:https://jsfiddle.net/Lcg1qca3/18/

你的问题在

n.arrayPicklist = checkCheckboxOnOff.fieldName

您正在尝试访问数组中的字段名 属性,而不是 checkCheckboxOnOff 数组中的索引。

用这个替换那行

opleidingfilter.forEach(function(n,i) {n.arrayPicklist = checkCheckboxOnOff[i].fieldName});

这样您就可以访问迭代器中的索引 属性,并且可以访问 checkCheckboxOnOff 数组中的每个项目。