简体   繁体   English

如何通过 Javascript 中的唯一属性对数组中的对象进行分组?

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

So My problem is that I am trying to group my array of contacts by "County", My only problem is that my grouping function works... not really.所以我的问题是我试图按“县”对我的联系人数组进行分组,我唯一的问题是我的分组 function 有效……不是真的。 If you run my code, you'll see that it groups as expected;如果你运行我的代码,你会看到它按预期分组; My only issue is that Washington, Florida and Washington, Alabama are two different counties that shouldn't be grouped together.我唯一的问题是,佛罗里达州的华盛顿州和阿拉巴马州的华盛顿州是两个不同的县,不应归为一类。 I know I can try to append an additional piece of info to the county in order to make it unique, like so: Washington,FL & Washington,AL.我知道我可以尝试向 append 提供该县的附加信息,以使其独一无二,例如:Washington,FL & Washington,AL。 That will probably solve the problem but will require me to mutate my dataset or write another lookup function for State codes.这可能会解决问题,但需要我改变我的数据集或为 State 代码编写另一个查找 function。

So is there a way that I can simply make sure that my function groups by unique county based on each data it has in hand on each object (like the State)?那么有没有一种方法可以简单地确保我的 function 根据每个 object (如州)上的每个数据按唯一县分组?

Thanks for your help.谢谢你的帮助。

 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"))

You could take a group of keys and join the values to a single key.您可以获取一组键并将值连接到单个键。

 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.

相关问题 JavaScript:如何使用嵌套属性对对象数组进行分组? - JavaScript: How to Group Array of Objects with Nested Properties? 如何通过比较两个不同的唯一属性来对不同大小的对象数组中的元素进行分组? 在 JavaScript 中 - How do group elements in an array of objects of different sizes by comparing two different unique properties? in javascript 如何将一组对象缩减为一个具有唯一属性的 object? JavaScript - How to reduce an array of objects into one object with unique properties? JavaScript javascript - 基于多个属性在数组中查找唯一对象 - javascript - find unique objects in array based on multiple properties 如何从一组复杂的对象中获取一组唯一的属性 - How to get an array of unique properties from an array of complex objects JavaScript - 根据多个属性将对象数组分组为子数组 - JavaScript - Group array of objects into sub-arrays based on multiple properties 如何从JavaScript中的数组中删除对象的属性? - How to remove properties of objects from a array in javascript? 如何在javascript中重命名数组中对象的属性? - How to rename properties of objects in array in javascript? 如何在javascript中的对象数组中分组和添加它们的值? - How to group and add their value in array of objects in javascript? 如何在javascript中分组或合并此对象数组? - How to group or merge this array of objects in javascript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM