我有一个数组,其中包含多个键name
和不同的键abteilung
:
{abteilung: "Research & Development", name: "Susanne Gast"}, {abteilung: "HR", name: "John Doe"}, {abteilung: "HR", name: "Joe Doe"}...
现在,我想为每个target
添加一个具有唯一ID的密钥name
。而且我还想为每个键+值source
添加一个ID为abteilung
的键。 abteilung
有重复项。
我能够添加键+值target
。但是如何添加abteilung
let linksArray = links;
let u = 0, let a = 0, ln = linksArray.length;
for (u;u<ln;u++){
linksArray[u].target = u+1;
}
感谢您的提示
答案 0 :(得分:1)
要分配source
,您可以先构建一个Map,该Map包含每个唯一实例的密钥。然后,映射值可以成为序列号。最后,在该Map中为每个对象执行查找,并将检索到的数字分配给source
属性:
const links = [{abteilung: "Research & Development", name: "Susanne Gast"}, {abteilung: "HR", name: "John Doe"}, {abteilung: "HR", name: "Joe Doe"}];
const map = new Map(links.map(o => [o.abteilung, 0]));
Array.from(map.keys(), (abteilung, i) => map.set(abteilung, i+1));
links.forEach(o => o.source = map.get(o.abteilung));
console.log(links);
我没有包括对target
的分配,因为您已经可以正常工作了。
如果编号不一定是没有空格的序列,但是允许有空格,那么您也可以在构建Map的过程中分配序列号:
var links = [{abteilung: "Research & Development", name: "Susanne Gast"}, {abteilung: "HR", name: "John Doe"}, {abteilung: "HR", name: "Joe Doe"}];
let i = 0;
const map = new Map(links.map(o => [o.abteilung, i++]));
links.forEach(o => o.source = map.get(o.abteilung));
console.log(links);