【发布时间】:2018-07-15 17:03:16
【问题描述】:
这是 JavaScript 的 sn-p。正在调用reduce 函数来计算出现次数,并将计数返回给变量total。 reduce函数调用可以概括为reduce(array, someFunction, start){function body}。
下面使用的reduce 的具体实例是reduce(array, (a,b) => a + b, 0) 的形式。在下面的sn-p中,{count}这个表达式是怎么用的,为什么用大括号{}括起来?在我看来它既不是函数体也不是对象。
let total = scripts.reduce((n, {count}) => n + count, 0);
if (total == 0) return "No scripts found";
【问题讨论】:
-
destructuring 和
{count}表示scripts数组中的元素是具有count属性的对象。{count}提取那些。n + count和初始值0也暗示每个count属性的值都是一个数字。 -
这是一个来自 Eloquent Javascript 的例子。几个关键点: 1. 看函数countBy的定义,同页。它返回一个具有 name 和 count 属性的对象数组 (counts.push({name, count: 1})) 这里使用的脚本对象是由这个函数创建的。 2. 在对象数组上使用数组方法reduce() 时,必须指定传入对象中的哪个对象属性应用作reducer 函数的currentValue。作者使用了解构,但他们可以写成
(n, x)=> n + x.count,而不是(n, {count}) => n + count。
标签: javascript parameters