问题描述
js 数组对象判断是否包含某个属性及属性值?
相关代码
var list = [{a:1,b:2},{a:1,b:2},{a:2,b:4}]
var arr = [{a:1,b:1,c:1},{a:2,b:2,c:2}]
如何用js判断 如果 list数组 的 a 包含 arr 的 a 可以用some
并且 符合包含条件的length要等于arr的c 小于不执行 大于的话多出部分不执行
我的尝试
for (var j = 0; j < list.length; j++) {
for (var i = 0; i < arr.length; i++) {
if(list.some(item=> item.a== arr[i].a)){
list[j].b = arr[i].b
}
}
}
这里没考虑符合条件的length 直接赋值 结果都赋的最后一项 错误示范
你期待的结果是什么?
经过判断后{list.b = arr.b}
因arr a1 c值为1 list a1的length为2 所以只执行一次{list.b = arr.b}
最后结果为list = [{a:1,b:1},{a:1,b:2},{a:2,b:4}]
不知道你要不要过滤,下面的代码没有过滤,要过滤的话把forEach中filter的结果组合为一个数组就行