Javascript 有人能解释一下吗?减少函数代码?
有一些很棒的答案,我真的很喜欢奥利奥的答案,但似乎无法理解其中的逻辑 这是:Javascript 有人能解释一下吗?减少函数代码?,javascript,Javascript,有一些很棒的答案,我真的很喜欢奥利奥的答案,但似乎无法理解其中的逻辑 这是: 函数countInArray(数组,值){ 返回数组.reduce((n,x)=>n+(x==value),0); } log(countInArray([1,2,3,4,4,4,3,4]);//3基本上,以下代码添加数组中的所有元素: [1, 2, 3].reduce((a, b) => a + b, 0); 上面的0是累加器的初始值a是累加器的当前值,每个循环中,累加器都会使用函数的返回值进行更新 在代码
函数countInArray(数组,值){
返回数组.reduce((n,x)=>n+(x==value),0);
}
log(countInArray([1,2,3,4,4,4,3,4]);//3
基本上,以下代码添加数组中的所有元素:
[1, 2, 3].reduce((a, b) => a + b, 0);
上面的0
是累加器的初始值a
是累加器的当前值,每个循环中,累加器都会使用函数的返回值进行更新
在代码中:
array.reduce((n, x) => n + (x === value), 0);
您正在给出要计数的值。任何等于true并添加到数字中的内容都将等于1,从而增加计数
因此,如果您有以下情况:
var value = 5;
var x = 5;
var n = 3;
(x === value) // becomes true
n + (x === value);
因此,上述代码变为n+(true)
,从技术上讲,这是n+1
这样,在整个循环中,使用累加器对值进行计数,并将其作为总和返回给您
代码如下:
array.reduce((n, x) => n + (x === value), 0);
等同于以下内容:
var count = 0;
for (var i = 0; i < array.length; i++) {
if (array[i] === value)
count = count + 1;
}
return count;
var计数=0;
对于(var i=0;i
这将减少数组中的函数计数值
.reduce( (n, x) => n + (x === value), 0)
n
是最后一个reducer值(第一个值是0
-最后一个reduce参数)。x
是当前元素。只有当x
等于值时,+(x==value)
才是1
,否则它是0
。因为在=>
之后我们不使用大括号,所以我们返回表达式n+(x===value)
数组。reduce函数用于将数组缩减为单个值。它有两个参数
用于还原的函数
此函数传递两个值,第一个值是前一个数组的缩减值
元素,第二个是当前数组元素
(可选)缩减的初始值,如果忽略,则为第一个数组
元素被使用
例如:
var name = ["J", "a", "v", "a"].reduce((a, b) => a + b); // "Java".
var sum = [1, 2, 3].reduce((a, b) => a + b); // 6.
var ret = functionArray.reduce((retArray, func) => retArray.push(func()), []);
数组.reduce的另一个近亲是数组.reduceRight,它基本相同,但从右到左(从高索引到低索引)遍历数组
例如:
var name = ["a", "v", "a", "J"].reduce((a, b) => a + b); // "Java".
你卡在哪里了?你能解释一下吗,你懂什么“但在开始时没有先前的功能”,这就是开始值发挥作用的地方。