[英]Javascript - getting data out of array of objects
我得到了這個樣本數據。
"array" : [
{"Id" : "1", "preferred" : false},
{"Id" : "1", "preferred" : true },
{"Id" : "2", "preferred" : false},
{"Id" : "2", "preferred" : false},]
我想擺脫這種情況。
"array2":[{"Id": 1, numOfTrue: 1, numOfFalse: 1},{"Id": 2, numOfTrue: 0, numOfFalse: 2}]
到目前為止,我得到的是一種如何從初始數組獲取唯一ID的方法。
const unique = [...new Set(array.map(item => Id))];
下一步將是一些forEach over數組,比較ID值,並為該布爾值設置一些計數器。 因此,在我探討forEach解決方案之前,我想問一問是否還有另一種使用方法。 filter()
和.reduce()
方法。
您可以使用reduce()
構建鍵為Id
的分組對象。 每次您看到Id
再次在相應的鍵處遞增該值。 最后,數組將是對象的Object.values()
:
let array = [ {"Id" : "1", "preferred" : false}, {"Id" : "1", "preferred" : true }, {"Id" : "2", "preferred" : false}, {"Id" : "2", "preferred" : false} ] let counts = array.reduce((counts, {Id, preferred}) => { // If you haven't seen this Id yet, make a new entry if (!counts[Id]) counts[Id] = {Id, numOfTrue: 0, numOfFalse: 0} // increment the appropriate value: if (preferred) counts[Id].numOfTrue++ else counts[Id].numOfFalse++ return counts }, {}) // get the values array of the object: console.log(Object.values(counts))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.