簡體   English   中英

Javascript-從對象數組中獲取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM