我需要比较两个数组:
var objects = [{name: 'a', is: false}, {name: 'b', is: false}, {name: 'c', is: false}];
var strings = ['a', 'b'];
如果来自对象的对象等于来自字符串的字符串之一,则将字段is
更改为true,但是我不知道该怎么做
答案 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);
希望这对您有帮助!