【发布时间】:2016-06-16 06:26:36
【问题描述】:
有了这个数组:
var booksStudents = [
{
name: "David",
books: {
"fantasy": 23,
"action": 31,
"thriller" 21,
}
},
name: "Paul",
books: {
"fantasy": 17,
"action": 13,
"thriller" 23,
}
},
name: "Zoe",
books: {
"fantasy": 5,
"action": 7,
"thriller" 28,
}
}];
我想返回一个对象数组,每个对象都包含一个人的名字和他们所有书籍的总和。
我知道如何在一个简单的数组上使用 reduce 方法,但我被这个对象数组卡住了。
我正在考虑使用.map 和.reduce,但我没有找到有趣的东西。
【问题讨论】:
-
首先用一个好的旧循环来实现它。然后将循环体提取到一个函数中。然后将循环替换为
Array.prototype.map -
您的对象似乎遗漏了几个左大括号。
-
您可以使用许多迭代器,例如map、forEach、reduce i>、reduceRight 等,但最符合语义的是 map。它将创建一个新数组,无论您的回调函数返回什么,都将其填充,然后返回。见MDN: Array.prototype.map,如果你有问题可以去发帖。
-
@RobG 他们不是“迭代器”
-
@zerkms——好的,活套? ;-)
标签: javascript arrays object methods