2016-03-20 2 views

ответ

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 необходимо!

0

Вы можете использовать for..in цикл, чтобы установить свойства output объекта к значениям obj, нажмите obj свойства элементов в массиве на output

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)

Смежные вопросы