如何比较对象数组和字符串数组?

时间:2019-03-27 11:44:03

标签: javascript arrays

我需要比较两个数组:

var objects = [{name: 'a', is: false}, {name: 'b', is: false}, {name: 'c', is: false}];
var strings = ['a', 'b'];

如果来自对象的对象等于来自字符串的字符串之一,则将字段is更改为true,但是我不知道该怎么做

3 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.map()Array.prototype.includes()

  • includes()检查name中是否存在strings
  • map()获取具有is属性新值的数组

var objects = [{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
var strings = ['a','b'];

let res = objects.map(x => ({...x,is:strings.includes(x.name)}))

console.log(res)

答案 1 :(得分:1)

您可以遍历 objects 数组并使用 indexOf 来检查 strings <中是否存在当前对象的 name 属性。 / em>数组

var objects = [{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
var strings = ['a','b'];

objects.forEach(function(obj) {
    if (strings.indexOf(obj.name)!=-1) obj.is = true;
})

console.log(objects);

答案 2 :(得分:1)

您可以使用Array.From

   var objects = [{name: 'a', is: false}, {name: 'b', is: false}, {name: 'c', is: false}];
   var strings = ['a', 'b'];

  var result = Array.from(objects, (o)=>{  return  {...o, is:strings.includes(o['name'])}; });

   console.log(result);

希望这对您有帮助!