如何在Javascript中使用groupBy对象?
我有一个目标如下:如何在Javascript中使用groupBy对象?,javascript,arrays,object,group-by,Javascript,Arrays,Object,Group By,我有一个目标如下: obj = { 'fruita' : 'eat', 'fruitb' : 'eat', 'fruitc' : 'throw', 'fruitd' : 'throw' } output = { 'eat' : ['fruita','fruitb'], 'throw' : ['fruitc','fruitd'] } 如何应用u.groupBy来分别获取eat和throw水果列表?我们可以将对象转换为键值对数组: var keyValues = Object.key
obj = {
'fruita' : 'eat',
'fruitb' : 'eat',
'fruitc' : 'throw',
'fruitd' : 'throw'
}
output = {
'eat' : ['fruita','fruitb'],
'throw' : ['fruitc','fruitd']
}
如何应用u.groupBy来分别获取eat和throw水果列表?我们可以将对象转换为键值对数组:
var keyValues = Object.keys(obj).map(key => ({ key, value: obj[key] }));
然后我们可以执行reduce
来构造我们的对象:
var values = keyValues.reduce((acc, kv) => {
if (typeof acc[kv.value] === 'undefined') {
acc[kv.value] = [];
}
acc[kv.value].push(kv.key);
return acc;
}, {});
没有必要 您可以在循环中使用
for..将output
对象的属性设置为obj
的值,将obj
属性推送到output
var obj={
‘水果’:‘吃’,
水果B:“吃”,
“水果C”:“扔”,
“水果”:“扔”
}
var输出={};
用于(obj中的var prop){
如果(!输出[obj[prop]]){
输出[obj[prop]]=[];
输出[obj[prop]]。推送(prop)
}否则{
输出[obj[prop]]。推送(prop)
}
}
console.log(输出)