假设我有三个数组,分别描述一些人的姓名,读的书籍数量以及这些人的[在名字中]厉害程度:
let names = ["Mary", "Joe", "Kenan"];
let numberOfBooks = [2, 1, 4];
let awesomenessLevel = ["pretty cool", "meh", "super-reader"];
我正在尝试使用.reduce()
将它们组合在一起,创建一个包含每个数组中相关索引的对象数组,但是我失败了:
let people = [
{
name: "Mary",
noOfBooks: 2,
awesomeness: "pretty cool"
},
{
name: "Joe",
noOfBooks: 1,
awesomeness: "meh"
},
{
name: "Kenan",
noOfBooks: 4,
awesomeness: "super-reader"
}
]
我也使用reduce方法做到了:
let arrFinal = [];
names.reduce(function(all, item, index) {
arrFinal.push({
name: item,
noOfBooks: numberOfBooks[index],
awesomeness: awesomenessLevel[index]
})
}, []);
reduce
的方式并没有发挥其优点:注意回调函数没有返回值,all累加器没有使用,这些是选择reduce
的典型特征。你可以将那段代码中的reduce
替换为forEach
(并根据需要调整参数-去掉all),结果是一样的。 - trincot