2016-05-14 14 views
0

で配列を並べ替え、これは構造体である:AngularJS:重複したオブジェクトを削除し、私はJSONを使用していた値

{ "variants": [ 
    { "capacity":"A", "color":"1" }, 
    { "capacity":"A", "color":"2" }, 
    { "capacity":"B", "color":"3" } 
    ]}; 

angular.forEachまたは別の方法を使用して、私はありませんが、繰り返しデータを表示したいと思い、それを並べ替えし、 、「能力」によって、このような何か(新しい配列)に関連:

$scope.newArray = [ 
    { "capacity":"A", "color1":"1", "color2":"2" }, 
    { "capacity":"B", "color_1":"3" } 
]; 

それは、角度の方法、あるいは単にjavascriptの可能性であるが、私は助けが必要!

+0

*重複値を削除する – nneeggrroo

答えて

0
a = { 'variants': [ 
     {'capacity': 'A','color': '1'}, 
     {'capacity': 'A','color': '2'}, 
     {'capacity': 'B','color': '3'}, 
]}; 

b = a.variants 
c = b.reduce(function (prev, crt) { 
    prev[crt.capacity] = (prev[crt.capacity] || [ 
    ]).concat(crt.color) 
    return prev; 
}, {}) 
// c is now {"A": ["1","2"], "B": ["3"]} 

d = [] 
for (var name in c) { 
    if (c.hasOwnProperty(name)) { 
    f = { 
     'capacity': name 
    } 
    c[name].forEach(function (e) { 
     f['color' + e] = e; 
    }) 
    // f is {"capacity": "A", "color1": "1","color2": "2"} 
    // and then {"capacity": "B", "color3": "3"} 
    d = d.concat(f) 
    } 
} 

// d is [{"capacity": "A", "color1": "1","color2": "2"}, 
//  {"capacity": "B", "color3": "3"}] 
関連する問題