2016-06-27 6 views
1
var data = [ 
    { 
    name : "Micah Richards", 
    position : "Centre Back" 
    }, 
    { 
    name: "Kieran Richardson", 
    position: "Left-Back"}, 
    { 
    name: "Rudy Gestede", 
    position: "Centre"}, 
    { 
    name: "Jack Grealish", 
    position: "Left Wing"}, 
    { 
    name: "Brad Guzan", 
    position: "Keeper" 
    } 
] 

私は上記のJSONオブジェクトを持っています。 lodashを使用してJSONオブジェクトのように変換するにはどうすればよいですか?lodash - 新しいグループを作成してオブジェクトをプッシュ

var data = { 
    defenders: [ 
    { 
    name: "Micah Richards", 
    position: "Centre Back" 
    }, 
    { 
    name: "Kieran Richardson","position":"Left-Back" 
    } 
    ], 
"midfielder" : 
    [{"name":"Rudy Gestede","position":"Forward"}, 
    {"name":"Jack Grealish","position":"Left Wing"}], 
"keeper":[ {"name":"Brad Guzan","position":"Keeper"}]} 

答えて

0

lodashソリューション:

var data = [{ 
    name: "Micah Richards", 
    position: "Centre Back" 
}, { 
    name: "Kieran Richardson", 
    position: "Left-Back" 
}, { 
    name: "Rudy Gestede", 
    position: "Forward" 
}, { 
    name: "Jack Grealish", 
    position: "Left Wing" 
}, { 
    name: "Brad Guzan", 
    position: "Keeper" 
}]; 

var result = _.groupBy(data, function(item) { 
    var positionType = ''; 

    switch (item.position) { 
    case 'Centre Back': 
    case 'Left-Back': 
     positionType = 'defenders'; 
     break; 
    case 'Forward': 
    case 'Left Wing': 
     positionType = 'midfielder'; 
     break; 
    case 'Keeper': 
     positionType = 'keeper'; 
     break; 
    } 

    return positionType; 
}); 

console.log(result); 

https://jsfiddle.net/dh0a1wfe/

+0

それは私が必要なものです - ありがとうミック。 –

0

プレーンJavaScriptでは、グループ参照にオブジェクトを使用して結果を構築できます。ここで

var data = [{ "name": "Micah Richards", "position": "Centre Back" }, { "name": "Kieran Richardson", "position": "Left-Back" }, { "name": "Rudy Gestede", "position": "Forward" }, { "name": "Jack Grealish", "position": "Left Wing" }, { "name": "Brad Guzan", "position": "Keeper" }], 
 
    groups = { "Centre Back": "defenders", "Left-Back": "defenders", "Forward": "midfielder", "Left Wing": "midfielder", "Keeper": "keeper" }, 
 
    grouped = {}; 
 

 
data.forEach(function (a) { 
 
    grouped[groups[a.position]] = grouped[groups[a.position]] || []; 
 
    grouped[groups[a.position]].push(a); 
 
}); 
 

 
console.log(grouped);

+0

おかげ@Nina - lodashを使用する方法?私は、ロダッシュを使ってこれを行う簡単な方法だと思います。とにかくありがとう –

+0

申し訳ありませんが、私はロダシを知らない。 –

関連する問題