2017-01-22 7 views
-1

は、私は以下の私がJSON追加するユニークキー値

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

をしたい出力Iが値を追加するかわからない配列内の一意の値を取得することができる午前中にバイオリンのためのユニークな値を追加しようとしています

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のを必要とせずにこれを行うことができます:あなたはカテゴリの配列としてそれをしたい場合は

{ fos: 70, nyedva: 30 } 

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); 

この利回りを:

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

これはあなたを与えるだろう。

[ { category: 'fos', value: 70 }, 
    { category: 'nyedva', value: 30 } ] 
関連する問題