簡體   English   中英

如何在Javascript中對對象使用groupBy?

[英]How to use groupBy on object in Javascript?

我有一個對象如下:

obj = {
 'fruita' : 'eat',
 'fruitb' : 'eat',
 'fruitc' : 'throw',
 'fruitd' : 'throw'
}

output = {
 'eat' : ['fruita','fruitb'],
 'throw' : ['fruitc','fruitd']
}

如何應用_.groupBy以便分別獲取吃和扔水果的清單?

我們可以將對象轉換為鍵值對數組:

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!

您可以使用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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM