2014-08-29 68 views
0

我有一個具有重複值的對象,我想要計算所有具有相同值並將其刪除的對象。Javascript - 計數並從對象中移除

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

從這個數組中我想創建另一個數組,但刪除重複的值並計數它們是這樣的。

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

而問題是? – 2014-08-29 11:51:59

+1

你爲什麼要存儲爲{nr:'bbc'}而不是隻存儲'bbc'的列表 – Strikeskids 2014-08-29 11:52:06

+0

我需要這樣的東西。 – diegoddox 2014-08-29 11:58:44

回答

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 2014-08-29 12:06:04

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]; 
} 

這傷口產量some​​hing像:

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

如果你還需要將其與你指定的結構,則:

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

@Andy在您的評論之前已經糾正:) – 2014-08-29 11:54:58

+0

謝謝,但我需要一個數組與關鍵和數量在同一個對象。 – diegoddox 2014-08-29 11:56:16

+0

@ user1483534看到我的編輯! – 2014-08-29 12:04:00