我正在使用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,
);
});
返回此简单的方法是什么?
谢谢。
答案 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));