我结束了繁琐的循环来转换
[{Name: "Daniel Montes", color: "red"},
{Name: "Daniel Montes", color: "red"},
{Name: "Daniel Montes", color: "red"},
{Name: "Michelle Aguirre", color: "red"},
{Name: "Daniel Montes", color: "green"}
]
至
[
{Name: "Daniel Montes", green:1,red:3},
{Name: "Michelle Aguirre", green:0,red:1},
]
红色和绿色只有 2 种颜色,因此也可以进行硬编码。
实现它的最佳方法是什么?我们在 lodash 或类似的东西上有什么吗?
var input = [{Name: "Daniel Montes", color: "red"},
{Name: "Daniel Montes", color: "red"},
{Name: "Daniel Montes", color: "red"},
{Name: "Michelle Aguirre", color: "red"},
{Name: "Daniel Montes", color: "green"}
];
function solve(list){
var map = new Map();
var entry = null;
for(var item of list){
if(!map.has(item.Name))
map.set(item.Name, {Name: item.Name});
entry = map.get(item.Name);
if(entry.hasOwnProperty(item.color))
entry[item.color] = entry[item.color] + 1;
else
entry[item.color] = 1;
}
return Array.from(map.values());
}
console.log(solve(input))
这是我为您的问题编写的快速解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句