Cover image
Hero image

托码特人

分享科技与人文

一个关注互联网的技术博客

用reduce将数组变成带特定键值的对象

因为

出自ES6的 Array,用来做累加的。以前我一直用来做算术求和,直到前一阵子看到了一个骚操作,于是又做了一番折腾…

看这段代码先:

const names = ["jack", "pony", "tony", "thomas"];
const entry = names.reduce((prev, cur) => {
  prev[cur] = `My full name is ${cur} ma.`;
  return prev;
}, {});

结果:

{ "jack": "My full name is jack ma.", "pony": "My full name is pony ma.", "tony": "My full name is tony ma.", "thomas": "My full name is thomas ma." }

把一个数组转成了对象,如此优雅的操作。试想,不用这个如何达到效果!?

const names = ['jack', 'pony', 'tony', 'thomas'];
const obj = {};
for (let name of names) {
    obj[name] = `My full name is ${name} ma.`
}

此时,多定义了一个变量,用了一层循环,看起来很没科技感。戳到 API,我们可以看到它是这么定义的:

reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;

是的,第二个参数竟然是泛型。之前一直传数字做累加,今天记住了。

所以

reduce 功能不止于此…

赞赏

声明: 本文内容由托码斯创作整理,由于知识水平和时效性问题,行文可能存在差错,欢迎留言交流。读者若需转载,请保留出处,谢谢!