基于具有新键和值的列表将新对象添加到数组
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 数组中的每个项目。
我有一个复选框,可以从列表中创建一个 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 数组中的每个项目。