cqwcns 发表于 2020-8-8 16:13

JS对象比较并新增属性的问题

我有两个格式类似如下的数组对象,我希望objA对比ojbB,如果id重复的(即objA和ojbB都有相同的ID),则在objA的对应对象中添加一个属性isChanges:true。
我的想法是先for循环其中一个,再在for循环中嵌套for循环,好像很不科学。
这样的需求,怎么写比较高效简单?谢谢指教。


            let objA = [{
            id: '1111',
            content: '内容内容AAA'
            }, {
            id: '22222',
            content: '内容内容BBBB'
            }, {
            id: '3333333',
            content: '内容内容CCCC'
            }, {
            id: '4444444',
            content: '内容内容DDDDDD'
            }, {
            id: '555555',
            content: '内容内容EEE'
            }]

            let ojbB = [{
            id: '1111'
            }, {
            id: '3333333'
            }]

kesai 发表于 2020-8-8 16:23

本帖最后由 kesai 于 2020-8-8 16:25 编辑

var ids = new Set(ojbB.map(v => v.id));
objA.forEach(x => { if (ids.has(x.id)) x.isChanges = true; })

无常方便面 发表于 2020-8-8 17:42

kesai 发表于 2020-8-8 16:23
var ids = new Set(ojbB.map(v => v.id));
objA.forEach(x => { if (ids.ha ...

膜拜大佬的js

枫惜颜 发表于 2020-8-8 17:52

foreach循环遍历

luanshils 发表于 2020-8-8 18:13

会js的大佬,真的是信手拈来,像我就得想很久
页: [1]
查看完整版本: JS对象比较并新增属性的问题