如果我有如下对象
result = [
{
phones : ["ABC", "DEF"],
name: "Simon"
},
{
phones : ["ABC", "XZY"],
name: "John"
}
]
预期产量
键,值的映射
{ABC, ["Simon", "John"]}
{DEF, ["Simon"]}
{XYZ, ["John"]}
我的尝试
map: Map = new Map();
for ( r of result ) {
for( phone of r.phones) {
if(map.get(phone)){
map.put(phone, map.get(phone).concat(r.name))
} else {
map.put(phone, r.name);
}
}
}
ES6是否可以执行上述功能?
答案 0 :(得分:0)
答案 1 :(得分:0)
我不知道ES6是否足够,但是使用map-reduce可以得到这样的结果:
result.reduce((map, person) => {
person.phones.forEach(phone =>
map.has(phone)
? map.get(phone).push(person.name)
: map.set(phone, [person.name])
);
return map;
}, new Map());
但是代码大致相同,性能可能相差不远,可读性在读者眼中。
简而言之,您的里程可能会有所不同。