要从地图中获取不同字符串的数组,请从Map值的属性中提取字符串

时间:2018-06-19 12:17:51

标签: javascript arrays dictionary for-loop

我需要从地图中获得一个由不同字符串组成的数组,并从地图值的属性中提取字符串。目前,我有以下代码,并且想知道是否有更优雅的方法?

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

1 个答案:

答案 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());