2014-06-18 13 views
5

Ho un array di oggetti che è simile al seguente:duplicati trovando in array di oggetti JavaScript

  {value: 20, color: 'F88C00'}, 
      {value: 40, color: 'D8605F'}, 
      {value: 20, color: '72C380'}, 
      {value: 20, color: '2C7282'}, 
      {value: 20, color: '72C380'} 

voglio usare JavaScript/jQuery per ciclo attraverso di loro per verificare se ci sono duplicati nel colore colonna, e se ci sono duplicati, qui '72C380' si verifica due volte. Quindi dovrebbe esserci una sola voce ma i loro valori dovrebbero essere sommati.

output desiderato:

  {value: 20, color: 'F88C00'}, 
      {value: 40, color: 'D8605F'}, 
      **{value: 40, color: '72C380'},** 
      {value: 20, color: '2C7282'} 

so come fare in Python, ma non JS

+0

Vuoi eliminarlo? – M98

+0

Voglio eliminare quelli duplicati ma aggiungere upp i valori –

risposta

8

È possibile utilizzare una mappa temporanea come questo

var array = [{ 
    value: 20, 
    color: 'F88C00' 
}, { 
    value: 40, 
    color: 'D8605F' 
}, { 
    value: 20, 
    color: '72C380' 
}, { 
    value: 20, 
    color: '2C7282' 
}, { 
    value: 20, 
    color: '72C380' 
}]; 

var op = [], 
    map = {}, it, item; 
for (var i = 0; i < array.length; i++) { 
    it = array[i]; 
    item = map[it.color]; 
    if (item) { 
     item.value += it.value; 
    } else { 
     map[it.color] = item = { 
      value: it.value, 
      color: it.color 
     }; 
     op.push(item); 
    } 
} 
console.log(op) 

Demo: Fiddle

0

console it ...

var collection = [{value: 20, color: 'F88C00'}, 
      {value: 40, color: 'D8605F'}, 
      {value: 20, color: '72C380'}, 
      {value: 20, color: '2C7282'}, 
      {value: 20, color: '72C380'}]; 


var colors = []; 
var result = collection; 
$.each(result, function(i, item){ 
    if(colors.indexOf(item.color)!= -1){ 
     $.each(result,function(f, find){ 
     if(find.color == item.color){ 
      result[f].value += item.value; 
     } 
     }) 
     delete result[i]; 
    }else{ 
    colors.push(item.color); 
    } 
}) 
var colors = []; 
console.log(result); 
Problemi correlati