在下面的示例中,您会看到一些嘈杂但简单的实现。
初始情况
我们有一个包含重复信息的初始数组。
const listArray = [
{ songBy: 'George Michael', uid: 'A', whatEver: 12},
{ songBy: 'George Michael', uid: 'A', whatEver: 13},
{ songBy: 'George Michael', uid: 'A', whatEver: 14},
{ songBy: 'Michael Jackson', uid: 'B', whatEver: 12},
{ songBy: 'Michael Jackson', uid: 'B', whatEver: 16},
]
第一步
我们创建了一个新的地图,因为我们想摆脱第三栏,并清楚地保存艺术家的名字。(我们需要使用
songBy
因为某种原因,这是关键。我们将其在值内更改为
name
).
const listMap = new Map();
listArray.forEach(row => listMap.set(row.songBy, {name: row.songBy, uid: row.uid}));
第二步
最后,我们需要一个数组及其值:
const distinctListArray: Array<any> = [];
listMap.forEach(value => distinctListArray.push(value));
因此,我们得到的结果是一系列不同的对象,其形式如下:
[
name: string
uid: string
]
问题:
在我看来,这个实现太吵了,也没有那么优雅。步骤太多,变量太多。(这里的例子是我无法分享的真实代码的简化版本)。
有没有办法简化代码并提高效率?
编辑:
See online: TypeScript Playground