提供以下代码段
function countZeroes(array) {
function counter(total, element) {
return total + (element === 0 ? 1 : 0);
}
return reduce(counter, 0, array);
}
Run Code Online (Sandbox Code Playgroud)
reduce内置功能吗?它有什么作用?它是严格的相等运算符.
它根据严格的等式比较算法比较两个值并检查它们是否相同.
这是相反的==,如果它们是不同类型的,它将试图强制被比较的一个或两个值.那个使用Absract Equality Comparison算法.
抽象算法的规则可能很棘手.===除非你有特殊需要,否则最好不要使用==.
来自MDC文档
标准相等运算符(==和!=)比较两个操作数而不考虑它们的类型.严格相等运算符(===和!==)对相同类型的操作数执行相等比较.如果操作数必须是特定类型以及值,或者操作数的确切类型很重要,请使用严格相等运算符.否则,使用标准相等运算符,它允许您比较两个操作数的标识,即使它们的类型不同.
关于代码,这部分:
(element === 0 ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)
...基本上说,如果值element是正好等于0,然后使用1,否则使用0.
所以采取整个行:
return total + (element === 0 ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)
...函数的返回值将是total + 1,如果element等号0,否则返回值将是total + 0.
您可以使用if-else语句重写代码:
if( element === 0 ) {
return total + 1;
} else {
return total + 0;
}
Run Code Online (Sandbox Code Playgroud)
=====除了不强制转换变量之外,其他均相同
0 == '0' -> true
0 === '0' -> false
Run Code Online (Sandbox Code Playgroud)
reduce不是内置函数,但是它的确可以在数组的每个元素上运行计数器。
因此,对于数组中的每个元素,都将其检查为0,如果是,则将总数增加。
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |