如何比较两个数组并在JavaScript中返回差值

时间:2019-07-24 01:21:13

标签: javascript arrays reactjs

我正在使用ReactJS库构建一个应用程序,并试图弄清楚在比较两个数组后如何返回差值。

const a = [8,10,13,14];
const b = [{id: 8}, {id: 13}, {id: 14}];

我想得到的是 [10]

我尝试过但没有用的是一起使用地图和过滤器。

const newArray = b.map((itemB) => {
    return a.filter(
       itemA => itemB.id !== itemA,
    );
});

返回此简单的方法是什么?

谢谢。

3 个答案:

答案 0 :(得分:2)

为什么不过滤不想要的ID?

const a = [8, 10, 13, 14];
const b = [{ id: 8 }, { id: 13 }, { id: 14 }];

console.log(a.filter(num => !b.some(({ id }) => id === num)));

答案 1 :(得分:2)

由于您有两个具有不同项目类型的数组,因此可以将Array.filter()Array.map()结合使用来获得区别:

const a = [8,10,13,14];
const b = [{id: 8}, {id: 13}, {id: 14}];

const normalized = b.map(({ id }) => id);
const diff = a.filter(value => !normalized.includes(value));

console.log(diff);

编辑:我认为@Brian Le用.some()的解决方案更优雅(也许性能更高)!

答案 2 :(得分:1)

您可以使用lodash。

const diff = _.difference(a, b.map(({ id }) => id));