我需要从地图中获得一个由不同字符串组成的数组,并从地图值的属性中提取字符串。目前,我有以下代码,并且想知道是否有更优雅的方法?
myMap { key1 : [{ a : “myA”, b : “myB”, c : “myC”}, { a : “myAA”, b : “myB”, c : “myC”}],
key2 : [{ a : “myAA”, b : “myB”, c : “myC”}, { a : “myAAA”, b : “myB”, c : “myC”}]
}
需要= [“ myA”,“ myAA”,“ myAAA”]
var ans = new Set();
for (let i of myMap.values()) {
for (let j of i){
ans.add(j.a);
}
}
return Array.from(ans);
答案 0 :(得分:0)
return [...new Set([...myMap.values()].map(el => el.a))];
只需使用map
来使其简短一点即可。
或者,您可以使用帮助程序来确保唯一性:
const unique = (s = new Set) => el => !s.has(el) && s.add(el);
所以您可以这样做:
return [...myMap.values()].filter(unique());