我有一个对象如下:
obj = {
'fruita' : 'eat',
'fruitb' : 'eat',
'fruitc' : 'throw',
'fruitd' : 'throw'
}
output = {
'eat' : ['fruita','fruitb'],
'throw' : ['fruitc','fruitd']
}
如何申请_.groupBy以获得单独吃饭和扔水果的清单?
答案 0 :(得分:0)
我们可以将对象转换为键值对数组:
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;
}, {});
不需要lodash!
答案 1 :(得分:0)
您可以使用for..in
循环将output
对象的属性设置为obj
的值,将obj
属性推送到output
<内的数组中的项目/ p>
var obj = {
'fruita' : 'eat',
'fruitb' : 'eat',
'fruitc' : 'throw',
'fruitd' : 'throw'
}
var output = {};
for (var prop in obj) {
if (!output[obj[prop]]) {
output[obj[prop]] = [];
output[obj[prop]].push(prop)
} else {
output[obj[prop]].push(prop)
}
}
console.log(output)
&#13;