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

作者站长头像
站长
· 阅读数 15

问题描述

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

回复
1个回答
avatar
test
2024-07-17

不知道你要不要过滤,下面的代码没有过滤,要过滤的话把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)
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容