2016-06-27 2 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. Как преобразовать, как ниже объект JSON, используя lodash?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? Я думаю, это будет простой способ сделать это с помощью lodash. Спасибо в любом случае –

+0

извините, я не знаю lodash. –

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