typescript - lodash 重构过滤器函数
问题描述
我有以下代码,两个组件都使用 lodash 过滤器,我如何抽象函数以便不重复代码?
<VictoryScatter
style={{
data: { fill: BRAND_COLORS.white, stroke: BRAND_COLORS.chartLine.gradientGrayStart, strokeWidth: 3 },
}}
size={5}
data={_.filter(loanLimitData, (value, key) => {
return key !== 0 && key !== 6;
})}
/>
<VictoryScatter
style={{
data: { fill: BRAND_COLORS.white, stroke: BRAND_COLORS.chartLine.gradientBlueStart, strokeWidth: 3 },
}}
size={5}
data={_.filter(loanBalanceData, (value, key) => {
return key !== 0 && key !== 6;
})}
/>
所以,我需要为
_.filter(myArray, (value, key) => {
return key !== 0 && key !== 6;
})
解决方案
只需将数组作为参数:
const myFilter = <T extends any>(array: T[]): T[] =>
_.filter(array, (_, key) => {
return key !== 0 && key !== 6;
})
仅供参考,您可以使用内置Array.prototype.filter
方法执行相同操作:
const myFilter = <T extends any>(array: T[]): T[] =>
array.filter((_, key) => {
return key !== 0 && key !== 6;
})
在您要编写的组件中:
data={myFilter(loanLimitData)}
data={myFilter(loanBalanceData)}
推荐阅读
- python - AttributeError:模块“cv2.cv2”没有属性“waitkey”
- spring - 创建自定义 RestControllerAnnotation 以执行 requestMapping
- scala - Kubernetes 火花提交
- php - 从 PHP 中的 Var 中删除特定字符串
- javascript - 类似于 Java 或任何其他语言中的 JavaScript 对象的数据结构的正确/首选名称是什么?
- javascript - 使用 PrivateRoute 响应异步登录检查
- javascript - 将 cytoscape div 高度分配为父级的剩余部分
- javascript - 如何升级 Node 文件中的特定包?
- javascript - 传单地图缩小得太远
- python - 堆栈数据结构制作网络浏览器