比较两个数组对象中的属性的问题

let a =[

{
    name: '111',
    id: '111'
},
{
    name: '222',
    id: '222'
},
{
    name: '333',
    id: '333'
}

]
let b =[

{
    type: '',
    no: '222',
    sex: '',
    love: ''
}

]

for(let i=0; i<a.length; i++){

for(let j=0; j<b.length; j++){
  if(a[i].id== b[j].no){   //两个数组对象中指定好的属性值判断
    a[i].picsUrl = '添加服务器上的图片'
  }
}

}

如上面的demo代码所示:

a数组和b数组比较,第一个目的是要比较出id值相同的时候,往数组对象中添加一个属性picsUrl(如上代码已知道实现);
(目前未实现)第二个目的是需要比较出在a数组对象中不包含b的数组对象,再给最终筛选出的结果也添加一个属性picsUrl,这种情况,最终过滤了后的数组为:
result = [
    {
        name: '111',
        id: '111'
    },
    {
        name: '333',
        id: '333'
    }
]
各位大佬,能否指点下有什么方法 把目前我未实现的那个点指点迷津下哈?
阅读 3.7k
3 个回答

这有API

hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 obj.hasOwnProperty(prop)
Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名

判断数组是否包含某个值

Array.prototype.includes()

没看懂第二步要干嘛,但我想这些方法应该够了

不是特别明白你的意思 你这个result的picsUrl哪去了
我理解成a中包含b就把a中的数据删除掉
那你先循环b里面再循环a重复的在a中splice掉

你最终想要的是a过滤掉b得到的结果?

var result = []
a.reduce((total, currentVal)=> {
    b.forEach(item => {
        if(currentVal.id !== item.no) {
            result.push(currentVal)
        }
    })
},0)
console.log(result)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题