在数组中添加新的键和值

时间:2019-07-14 12:35:53

标签: javascript jquery arrays

我有一个数组,其中包含多个键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;
}

感谢您的提示

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);