簡體   English   中英

如何通過 Javascript 中的唯一屬性對數組中的對象進行分組?

[英]How To Group Objects In Array By Unique Properties in Javascript?

所以我的問題是我試圖按“縣”對我的聯系人數組進行分組,我唯一的問題是我的分組 function 有效……不是真的。 如果你運行我的代碼,你會看到它按預期分組; 我唯一的問題是,佛羅里達州的華盛頓州和阿拉巴馬州的華盛頓州是兩個不同的縣,不應歸為一類。 我知道我可以嘗試向 append 提供該縣的附加信息,以使其獨一無二,例如:Washington,FL & Washington,AL。 這可能會解決問題,但需要我改變我的數據集或為 State 代碼編寫另一個查找 function。

那么有沒有一種方法可以簡單地確保我的 function 根據每個 object (如州)上的每個數據按唯一縣分組?

謝謝你的幫助。

 function groupBy(array, key) { return array.reduce((r, a) => {;(r[a[String(key)]] = r[a[String(key)]] || []).push(a) return r }, {}) } const contacts = [ { County: 'Washington', State: 'Florida', Country: 'United States', Name: 'Bob Michael', }, { County: 'Washington', State: 'Alabama', Country: 'United States', Name: 'John Doe', }, ] console.log(groupBy(contacts, "County"))

您可以獲取一組鍵並將值連接到單個鍵。

 function groupBy(array, keys) { return array.reduce((r, o) => { const key = keys.map(k => o[k]).join('|'); (r[key] = r[key] || []).push(o); return r; }, {}); } const contacts = [ { County: 'Washington', State: 'Florida', Country: 'United States', Name: 'Bob Michael', }, { County: 'Washington', State: 'Alabama', Country: 'United States', Name: 'John Doe', }, ] console.log(groupBy(contacts, ["Country", "State", "County"]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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