根据另一个数组

时间:2016-12-13 15:14:14

标签: javascript arrays

我有以下问题:在我的应用程序中,我从后端收到一个包含逗号分隔的数字列表的字符串,我使用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中很新。

4 个答案:

答案 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);