当我使用
groupByIDErr
obj[item[key]] is not iterable
所以为了让它工作,我使用
groupByID
具有未定义检查的函数,如下所示。
array reduce有更好的处理方法吗?对于我提供的示例,我在这里所做的很好,但当我必须减少更复杂的数组时,我发现很难维护。
function groupByIDErr(arr,key){
return arr.reduce((obj, item) => {
return {
...obj,
[item[key]]: [
...obj[item[key]],
item
]
}
}, {})
}
function groupByID(arr,key){
return arr.reduce((obj, item) => {
return {
...obj,
[item[key]]: obj[item[key]] !== undefined ? [
...obj[item[key]],
item
]:[item]
}
}, {})
}
const people = [
{gender:'male', name: 'Tom'},
{gender:'male', name: 'Richard'},
{gender:'male', name: 'Harry'},
{gender:'female', name: 'Sarah'},
{gender:'female', name: 'Kate'}
]
console.log(groupByID(people,'gender'))