2016-05-14 83 views
0

我使用JSON數組,這是結構:AngularJS:刪除重複的對象和重排由值

{ "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"}]