前言

对于数组的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

评论

暂无评论数据

暂无评论数据

目录