我有以下问题:在我的应用程序中,我从后端收到一个包含逗号分隔的数字列表的字符串,我使用join()转换为数组。然后我从另一个方法得到一个包含几个对象的数组,如下例所示:
strArray = [1,3]
objArray = [{'id':1,'name':'A'},
{'id':2,'name':'B'},
{'id':3,'name':'C'}]
我需要基于这两个数组创建另一个数组,期望得到以下结果:
resultArray = [{'id':1,'name':'A','selected': true},
{'id':2,'name':'B','selected': false},
{'id':3,'name':'C','selected': true}]
我尝试过使用地图和功能但没有成功。我在javascript中很新。
答案 0 :(得分:2)
这会有帮助吗?
objArray.map(obj => {
obj['selected'] = strArray.indexOf(obj.id) != -1;
return obj;
});
答案 1 :(得分:1)
试试这个:
strArray = [1, 3]
objArray = [{
'id': 1,
'name': 'A'
}, {
'id': 2,
'name': 'B'
}, {
'id': 3,
'name': 'C'
}]
var res = objArray.map(x => Object.assign(x, {
sel: strArray.includes(x.id)
}))
console.log(res)

但请考虑浏览器对所提方法的支持。
答案 2 :(得分:0)
使用地图:
objArray.map(function(item){
return {id: item.id, name: item.name,selected: strArray.indexOf(item.id) > -1};
})
答案 3 :(得分:0)
希望这会有所帮助。使用简单的.map
var strArray = [1,3];
var objArray = [{'id':1,'name':'A'},
{'id':2,'name':'B'},
{'id':3,'name':'C'}];
var resultArray = objArray.map(function(obj){
obj.selected = strArray.indexOf(obj.id) > -1;
return obj;
});
console.log(resultArray);