将两个数组与对象进行比较,并显示一个数组中哪个项不相同

时间:2018-09-27 11:48:17

标签: javascript arrays ecmascript-6

我有一个问题,我有两个数组,它们的对象具有id等属性。我想比较这些数组并显示它们之间的区别,但仅从1个数组开始。

因为我要检查某个项目是否已删除,并且不再存在于其他数组中。这里是我如何实现此目的的示例:

var completedList = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 7 }, { id: 8 }],
    invalidList = [{ id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }],
    map = new Map(completedList.map(o => [o.id, o])),
    result = Array.from(invalidList.reduce((m, o) => {
        if (m.has(o.id)) {
            m.delete(o.id);
        } else {
            m.set(o.id, o);
        }
        return m;
    }, map).values());

    console.log(result);

所以基本上我想输出的是invalidList与completedList的区别。所以我期望的输出是5,6

0 个答案:

没有答案