我有對象的一個這樣的數組:計數出現在JavaScript數組
arrayOfObjs = [{1:"h"}, {1:"h"}, {2:"h"}, {3:"ha"}, {4:"haa"}, {4:"haa"}, {4:"haa"}]
我想計數每個對象的發生,並得到結果早在排序,可迭代數據結構,像這樣:
{
{4:"haa"}: 3,
{1:"h"}: 2,
{2:"h"}: 1,
{3:"ha"}: 1
}
鍵甚至可以在數組中。 我嘗試在arrayOfObjs上使用Lodash的countBy函數。然而,這只是導致
{[object Object]:5}
我可以用來完成這項工作的任何庫/函數?類似Python的反
UPDATE
作爲替代的東西,我想整理我的數組是這樣的:
array = [[1,"h"], [1,"h"], [2,"h"], [3,"ha"], [4,"haa"], [4,"haa"], [4,"haa"]];
再次使用Lodash的countBY功能,我的結果是:
{1,h: 2, 2,h: 1, 3,ha: 1, 4,haa: 3}
這是一個位更好的,但我現在必須使用正則表達式來拆分對象的每個鍵,因爲「1,h」是一個字符串。不理想:(
理想,我想我的鑰匙是任何物體,或陣列,或諸如此類的東西。
你的意思是你想用相同的屬性,彼此算對象的出現這個任務?因爲在你的示例數組中,每個對象只出現一次:前兩個數組元素不是同一個對象,它們是兩個不同的對象,它們恰好具有相同的屬性。 – nnnnnn
嘗試比較JSON.stringify字符串 – mplungjan
不幸的是,您的密鑰無法成爲對象或除此之外的任何字符串。 JavaScript對象是散列表,而散列表鍵是字符串。 JavaScript不允許原始值作爲鍵,所以即使您將對象鍵設置爲數字,它仍將轉換爲字符串。使用JSON的建議大多緩解了這種擔憂,因爲您可以隨後將密鑰反序列化爲對象。 –