2017-01-22 2 views
-1

Ich versuche, die eindeutigen Werte für die Geige in dem unten stehenden Ausgang IJSON Hinzufügen von eindeutigen Schlüsselwerten

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

Ich bin in der Lage fügen Sie die einzigartigen Werte im Array erhält nicht sicher, wo die Werte hinzufügen

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

Antwort

0

können forEach() Schleife verwenden, um gewünschte Ergebnis zurück.

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

Sie können dies für jQuery, ohne die Notwendigkeit tun:

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

Dies ergibt:

{ fos: 70, nyedva: 30 } 

Wenn Sie es als ein Array von Kategorien wollen:

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

Dies gibt Ihnen:

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