此函数用于逐个处理所有数组元素,从而从数组中获取一个值。
您提供了一个回调方法,该函数为给定数组的每个元素运行。回调函数必须在其前一个参数中返回一个值,该值被传递给下一个元素的回调。
第一次调用此回调函数时,其 previous 参数被设置为第一个数组元素 (或给定 offset 处的元素) 的值,并且跳过数组范围的第一次迭代,这意味着回调从给定范围内的第二个元素开始。
如果您向此函数提供了 init 参数,则不会跳过第一次迭代,并且第一个元素回调的 previous 参数将被设置为您传递的 init 值。
当回调函数返回一个值时,它将被带到下一次迭代中。重复此过程,直到完全迭代给定的数组(或提供的范围)。该函数返回从最终元素的回调中获得的值。
最后还有几个特殊情况,处理如下:
array_reduce(array, function, [init], [offset], [length]);
参数 | 类型 | 描述 |
---|---|---|
array | Array | 要使用的数组 |
function | Function | 用于每个元素的函数 |
init | Any | 可选 用作第一个进位值的初始值。如果未提供,则默认为 array[offset] ,并跳过第一次迭代。 |
offset | Real | 可选 数组中的偏移量或起始索引。设置负值将从数组的末尾开始计数。然后,起始索引将是 array_length(array) + offset。请参阅 偏移量和长度 |
length | Real | 可选 要遍历的元素数。负值将向后遍历数组(即按索引的降序排列,例如 2>1>0 而不是 0>1>2)。请参阅 偏移量和长度 |
var _array = [2, 1, 3, 4, 5];
var _min_value = function(_previous, _current, _index)
{
return min(_previous, _current);
}
var _value = array_reduce(_array, _min_value);
上面的代码尝试查找数组中的最小值。它首先创建一个临时数组 array 并用一组数字填充它。
然后,它创建一个新函数 min_value,该函数返回 previous 或 current 参数中较小的一个。
最后,它使用 _min_value 作为回调函数,对数组调用 arrayReduce,并将最终结果存储在临时变量 value 中。此变量将包含 1,因为这是数组中的最小值。