我想使用数组减少按键组合我的数组中的项目。es6阵列减少处理第一个项目正在减少
当我使用groupByIDErr
功能下面我得到obj[item[key]] is not iterable
所以得到它的工作我使用groupByID
功能,有一个未定义的检查,如下图所示。
数组是否有更好的方法来处理这个问题?我在这里完成的工作对我提供的例子来说工作正常,但是当我必须减少更复杂的数组时,我发现维护起来很困难。
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'))
'arr.reduce(( obj,item,index)'...检查索引是否为0,并更改逻辑以适合 –
感谢@JaromandaX它看起来好像我甚至不需要更改逻辑,只需将'index'添加到'groupByIDErr '并且按预期工作 – ak85
@ ak85如果您自己解决了您的问题,请将您的解决方案发布在答案中并接受答案,以便其他人可以从您如何解决问题中获益。 – 4castle