使用 ES6 或 TypeScript 获取两个对象数组之间的差异
Posted
技术标签:
【中文标题】使用 ES6 或 TypeScript 获取两个对象数组之间的差异【英文标题】:Get diff between two arrays of objects with ES6 or TypeScript 【发布时间】:2016-12-06 15:09:43 【问题描述】:我有以下数组:
arr1 = [
id: 1,
name: 'Diego',
age: 23
,
id: 2,
name: 'Brian',
age: 18
]
arr2 = [
id: 1,
name: 'Diego',
age: 23
,
id: 2,
name: 'Brian',
age: 18
,
id: 3,
name: 'Pikachu',
age: 88
]
我需要得到这两个数组之间的差异,预期的结果是:
arr3 [id:3, name: 'Pikachu', age: 88]
如何使用ES6
或TypeScript
解决这个问题?
我尝试使用SET,但没有成功。
【问题讨论】:
首先,根据一些相等函数编写或找到一个例程来获取两组的差异。然后,为您的案例编写相等函数。 我想过,但我正在寻找一种更简单的方法。我会照你说的做的 【参考方案1】:可能是这样的:
let ids1 = arr1.map(item => item.id);
let ids2 = arr2.map(item => item.id);
let diff = ids1.map((id, index) =>
if (ids2.indexOf(id) < 0)
return arr1[index];
).concat(ids2.map((id, index) =>
if (ids1.indexOf(id) < 0)
return arr2[index];
)).filter(item => item != undefined);
(code in playground)
【讨论】:
以上是关于使用 ES6 或 TypeScript 获取两个对象数组之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
Typescript:esnext 编译器选项会破坏从外部库导入的 es6
如何从Typescript中以#或@开头的属性获取JSON数据