3 回答
TA贡献1898条经验 获得超8个赞
因此,以下内容为您提供了所需的输出,但我怀疑还有其他因素可能没有考虑在内(例如,维护ID,排序等)。
鉴于:
const input = [
{id: 68, name: "IT"},
{id: 67, name: "IT"},
{id: 66, name: "Supply chain"},
{id: 65, name: "Manufacturing Engineering"},
{id: 64, name: "Sales & Marketing"},
{id: 63, name: "Research and Development"},
{id: 62, name: "Research and Development"},
{id: 61, name: "Research and Development"},
];
我们可以:
const output = [...new Set(
// Get a unique set of department names
input.map(i => i.name)
)].map(
// With the new set of department names
// Reconstruct the list with id values starting at 1 instead of 0
(dept, idx) => ({
id: idx + 1,
name: dept,
})
);
TA贡献1777条经验 获得超10个赞
后来,您可以利用首先过滤掉重复值,然后相应地映射它。以下是操作方法:Map
var data = [{id: 68, name: "IT"},{id: 67, name: "IT"},{id: 66, name: "Supply chain"},{id: 65, name: "Manufacturing Engineering"},{id: 64, name: "Sales & Marketing"},{id: 63, name: "Research and Development"},{id: 62, name: "Research and Development"},{id: 61, name: "Research and Development"}];
var result1 = [...new Map(data.map(val=>[val.name, val])).values()];
var result2 = [...new Map(data.map(val=>[val.name, val])).values()].map(({id, name},i)=>({id:i+1, name}));
console.log(result1)
console.log(result2);
TA贡献1853条经验 获得超9个赞
如果您使用 rxjs,则可以使用此解决方案。
this.data = [...] // array
from(this.data)
.pipe(
distinct(data => data.name),
map(data => data.name),
toArray(),
map(names => ({...names}))
).subscribe(
console.log
);
添加回答
举报