2014-08-29 4 views
0

У меня есть объект с повторяющимися значениями, и я хочу считать все те, которые имеют одинаковое значение и удаляют их.Javascript - количество и удалить из объекта

var myArray = [{nr: 'bbc',}, {nr: 'bbc'}, {nr: 'bbc'}, {nr: ccc}]; 

из этого массива Я хочу создать другой массив, но удалить дублированные значения и считать их такими.

var myArray = [{nr: 'bbc',amount: 3}}, {nr: ccc,amount: 1}]; 
+0

И вопрос в том, что? –

+1

Почему вы храните как {nr: 'bbc'} вместо того, чтобы просто хранить список «bbc» – Strikeskids

+0

Мне нужно что-то вроде этого. – diegoddox

ответ

0

Если вы wa nt такая же структура, это будет работать на вас

var newArray = []; 
for (var i = 0; i < myArray.length; i++) { 
    var matched = false; 
    for (var j = 0; j < newArray.length; j++) { 
     if(myArray[i].nr === newArray[j].nr){ 
      matched = true; 
      newArray[j].amount++; 
      break; 
     } 
    }; 
    if(!matched) 
     newArray.push({nr:myArray[i].nr,amount:1}); 
}; 
console.log(newArray); 
+0

Большое спасибо, что я искал. БЛАГОДАРЯ – diegoddox

1

Вы могли бы, вероятно, использовать лучший формат

var count = {}; 
for(var i = 0; i < myArray.length; ++i) { 
    if(typeof count[myArray[i].nr] == 'undefined') { 
    count[myArray[i].nr] = 0; 
    } 

    ++count[myArray[i].nr]; 
} 

и эту рану выход somehing как:

count = { 
    bcc: 3, 
    ccc: 1 
}; 

, если вам все еще нужно это со структурой, указанной, то:

var newArray = []; 
for(var k in count) { 
    newArray.push({ 
    nr: k, 
    amount: count[k] 
    }); 
} 
+0

@ Andy уже исправлено прямо перед вашим комментарием :) –

+0

Спасибо, но мне нужен массив с ключом и сумма в том же объекте. – diegoddox

+0

@ user1483534 см. Мое редактирование! –

Смежные вопросы