【发布时间】:2020-07-25 18:20:06
【问题描述】:
所以我的问题是我试图按“县”对我的联系人数组进行分组,我唯一的问题是我的分组功能有效......不是真的。如果你运行我的代码,你会看到它按预期分组;我唯一的问题是,佛罗里达州的华盛顿州和阿拉巴马州的华盛顿州是两个不同的县,不应归为一类。我知道我可以尝试在该县附加一条额外的信息,以使其独一无二,例如:Washington,FL & Washington,AL。这可能会解决问题,但需要我改变我的数据集或为状态代码编写另一个查找函数。
那么有没有一种方法可以简单地确保我的函数根据每个对象(如州)上的每个数据按唯一县分组?
感谢您的帮助。
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"))
【问题讨论】:
-
您想要什么样的输出?一个对象不能有多个相同的键,因此不可能有两个
Washington键 -
像
"{Washington,Florida: [{..},{..}], Washington,Alabama: [{..},{..}], ...}这样的事情我会很好。稍后我仍然需要解析每个键以删除 State 字符串,但至少我不会卡住
标签: javascript arrays function grouping javascript-objects