为什么 map 或 reduce 在没有给出任何条件的情况下保持 运行?
Why map or reduce keeps running without any condition given?
const array = [7, 2, 4, 1, 10, 6, 5, 11]
const max = array.reduce((acc, val) => {
console.log(val, acc)
return val > acc ? val : acc
}, 0)
console.log(max)
我在看这段reduce array method的代码,有一点完全看不懂,reducer函数是如何进行下一次迭代的?没有条件强制 reducer 函数转到数组中的下一个元素。在第一次迭代中,val 为 7,数组的第一个元素,acc 为 0,reducer 函数 returns 7 根据写入的条件。
我的问题是如何在 reducer 函数上调用作为新累加器的数字 7。我认为正常的程序是你必须满足某种条件才能一遍又一遍地迭代。 reduce 方法本身有写什么吗?你能解释一下吗?
根据此处的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
reduce() 方法对数组的 每个 元素执行 user-supplied “reducer” 回调函数,
请注意 array.reduce
:
reduce
calls the callback, as a function, once for each element after the
first element present in the array, in ascending order.
您可以将 reduce
理解为 array.map
,但它的目标是将数组更改为单个输出。
它将遍历整个 array
与 forEach
/map
/...
相同
检查下面的例子,即使你没有做任何事情,比如 return
或 array.reduce
的任何其他事情,它仍然会工作并迭代 array
您可以在此处查看 more
当然如果你不为array.reduce
使用return
,你使用array.reduce就没有任何好处
const array = [7, 2, 4, 1, 10, 6, 5, 11]
const max = array.reduce((acc, val) => {
console.log(val)
}, 0)
console.log(max)
reduce
方法的实现类似于这样:
Array.prototype.reduce = function(callback, initialValue) {
var acc = initialValue;
for(var i = 0; i < this.length; i++) {
acc = callback(acc, this[i], i);
}
return acc;
}
reduce
方法迭代条件是数组长度。
map
.
也是如此
const array = [7, 2, 4, 1, 10, 6, 5, 11]
const max = array.reduce((acc, val) => {
console.log(val, acc)
return val > acc ? val : acc
}, 0)
console.log(max)
我在看这段reduce array method的代码,有一点完全看不懂,reducer函数是如何进行下一次迭代的?没有条件强制 reducer 函数转到数组中的下一个元素。在第一次迭代中,val 为 7,数组的第一个元素,acc 为 0,reducer 函数 returns 7 根据写入的条件。 我的问题是如何在 reducer 函数上调用作为新累加器的数字 7。我认为正常的程序是你必须满足某种条件才能一遍又一遍地迭代。 reduce 方法本身有写什么吗?你能解释一下吗?
根据此处的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
reduce() 方法对数组的 每个 元素执行 user-supplied “reducer” 回调函数,
请注意 array.reduce
:
reduce calls the callback, as a function, once for each element after the first element present in the array, in ascending order.
您可以将 reduce
理解为 array.map
,但它的目标是将数组更改为单个输出。
它将遍历整个 array
与 forEach
/map
/...
检查下面的例子,即使你没有做任何事情,比如 return
或 array.reduce
的任何其他事情,它仍然会工作并迭代 array
您可以在此处查看 more
当然如果你不为array.reduce
使用return
,你使用array.reduce就没有任何好处
const array = [7, 2, 4, 1, 10, 6, 5, 11]
const max = array.reduce((acc, val) => {
console.log(val)
}, 0)
console.log(max)
reduce
方法的实现类似于这样:
Array.prototype.reduce = function(callback, initialValue) {
var acc = initialValue;
for(var i = 0; i < this.length; i++) {
acc = callback(acc, this[i], i);
}
return acc;
}
reduce
方法迭代条件是数组长度。
map
.