2017-01-22 74 views
-1

我想下面的輸出我想JSON添加唯一鍵值

{ category: 'fos', value: 70 }, 
    { category: 'nyedva', value: 30 } 

我能夠獲得陣列中不知道在哪裏添加值的唯一值添加唯一值的小提琴

http://jsfiddle.net/mj3q0sk3/

var catalog={ 
    products : [ 
     { category: 'fos', value: 10 }, 
     { category: 'fos', value: 20 }, 
     { category: 'nyedva', value: 30 }, 
     { category: 'fos', value: 40 }, 
    ] 
}; 
var categories = []; 
var sum=[]; 

$.each(catalog.products, function(index, value) { 
    if ($.inArray(value.category, categories)==-1) { 
     categories.push(value.category); 
    } 
    else { 
      console.log("CAt Val:" +value.category); 
      var total=value.value; 
     sum.push(total); 
    } 

}); 

console.log(categories); 
console.log(sum); 

回答

0

您可以使用forEach()循環返回期望的結果。

var catalog = {"products":[{"category":"fos","value":10},{"category":"fos","value":20},{"category":"nyedva","value":30},{"category":"fos","value":40}]} 
 

 
var result = []; 
 
catalog.products.forEach(function(e) { 
 
    var c = e.category; 
 
    !this[c] ? (this[c] = e, result.push(this[c])) : this[c].value += e.value 
 
}, {}) 
 

 
console.log(result)

0

您可以jQuery的做到這一點,而無需:

var res = catalog.products.reduce(function(res, product) { 
    if (!res.hasOwnProperty(product.category)) { 
    res[product.category] = 0; 
    } 
    res[product.category] += product.value; 
    return res; 
}, {}); 

console.log(res); 

這產生了:

{ fos: 70, nyedva: 30 } 

如果你想把它當作類的數組:

console.log(Object.keys(res).map(function(key) { return { category: key, value: res[key] }; })); 

這會給你:

[ { category: 'fos', value: 70 }, 
    { category: 'nyedva', value: 30 } ]