数组Array的reduce方法有意思的使用场景
前言
对于数组的reduce
方法一直用的比较少,大多数情况下forEach\filter\map
就可以满足需求,但是对于reduce
一直没找到合适的使用场景,就很可惜,想用但是没用上。
最近在nest的教程中看到这么一种有趣的用法,特此分享!
代码
在一些使用场景中,可能会使用扁平化的对象key来获取对象中的值,比如在后端中可以看到一些这样的用法:
this.config.get("database.host")
意思是我需要从config配置对象中获取数据库的host字段,但是config本身是存在很多配置项的,他可能会是这样的结构:
{
app: {
port: 3000
},
database: {
host: 'localhost'
}
}
为了方便获取到指定的属性,我们通过扁平化的key作为参数,那么如果方便的获取到具体的值,这里我们可以利用reduce
很便捷的就可以实现这个功能。
class Config {
config = {};
/** 获取配置 */
get(path: string) {
return path.split(".").reduce((config, key) => config[key], this.config);
}
}
先将path截断成数组,然后reduce这个数组。
reduce第一个参数我们传入this.config
,然后每次将key获取的值return返回做下一次的config参数,每次反的都是config[key]
值,这样很便捷的就实现了扁平化key取值的问题。
分类:
JavaScript
标签:
Arrayreduce
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据