我有一个数组,其中有多个键name
和不同的abteilung
键:
{abteilung: "Research & Development", name: "Susanne Gast"}, {abteilung: "HR", name: "John Doe"}, {abteilung: "HR", name: "Joe Doe"}...
现在我想为每个名称
添加一个具有唯一ID的关键目标
。我还想为每个键+值 abteilung
添加一个带有 id 的键 source
。 abteilung
有重复项。
我可以添加键+值目标
。但是如何为 abteilung
let linksArray = links;
let u = 0, let a = 0, ln = linksArray.length;
for (u;u<ln;u++){
linksArray[u].target = u+1;
}
感谢您的提示
最佳答案
为了分配源
,您可以首先构建一个 Map,其中每个唯一的 abteilung 都有一个键。然后,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);
关于javascript - 在数组中添加新的键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027493/