javascript - Typescript 按键分组数组
问题描述
如何键入 reduce 函数参数。
interface IGroupArrayByKey<T> {
data: T[]
key: string
}
export const groupArrayByKey = <T>({ data, key }: IGroupArrayByKey<T>): object => {
return data.reduce((acc: any, item: any) => {
return { ...acc, [item[key]]: [...(acc[item[key]] || []), item] }
}, {})
}
groupArrayByKey
函数的工作原理是您将数组作为 a 提供,date
并且key
该数组应分组
解决方案
几点注意事项:
keyof T
列出 T 类型的所有属性,并且不允许传递不是该对象键的任意字符串。非常有用的恕我直言。- 我们不能保证它
item[keyProp]
是字符串,但对象中的索引器只能是字符串或数字。这就是为什么这么丑as unknown as string
。如果你会使用 aMap
,那么我们就不需要演员表了。
interface IGroupArrayByKey<T> {
data: T[]
keyProp: keyof T
}
export const groupArrayByKey = <T>({ data, keyProp }: IGroupArrayByKey<T>) => {
return data.reduce<{ [key: string]: T[] }>((acc, item) => {
const key = item[keyProp] as unknown as string;
return { ...acc, [key]: [...(acc[key] || []), item] }
}, {})
}
推荐阅读
- php - 从 Multidem 数组中提取数据
- java - maven mysql连接器和官方mysql连接器jar有什么区别
- apache-kafka - Spring kafka 和 Kafka 集群
- excel - 循环遍历目录(需要帮助添加第二个范围)
- ruby - 只留下第二个数字的正则表达式
- javascript - 具有嵌套函数的节点异步函数
- sql - Redshift 或 ANY SQL:更新具有相似行且时间在 30 秒内的表
- bash - 无法从单行命令回显 bash 变量
- javascript - Object.create({}) 之间的区别 {}
- primefaces - Mojarra 上的 PrimeFaces TreeTable 问题