js 数组对象判断是否包含某个属性及属性值?

问题描述

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}]

阅读 2.1k
1 个回答

不知道你要不要过滤,下面的代码没有过滤,要过滤的话把forEach中filter的结果组合为一个数组就行

arr.forEach(item => {
    list.filter(citem => citem.a === item.a).slice(0, item.c).forEach(citem => citem.b = item.b)
})

console.log(list)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题