array_reduce

此函数用于逐个处理所有数组元素,从而从数组中获取一个值。

您提供了一个回调方法,该函数为给定数组的每个元素运行。回调函数必须在其前一个参数中返回一个值,该值被传递给下一个元素的回调。

回调函数回调函数

语法:

function(previous, current, index);

参数类型描述
previousAny前一次迭代返回的值
currentAny当前迭代的元素值
indexReal当前迭代的索引

 

第一次调用此回调函数时,其 previous 参数被设置为第一个数组元素 (或给定 offset 处的元素) 的值,并且跳过数组范围的第一次迭代,这意味着回调从给定范围内的第二个元素开始。

如果您向此函数提供了 init 参数,则不会跳过第一次迭代,并且第一个元素回调的 previous 参数将被设置为您传递的 init 值。

当回调函数返回一个值时,它将被带到下一次迭代中。重复此过程,直到完全迭代给定的数组(或提供的范围)。该函数返回从最终元素的回调中获得的值。

最后还有几个特殊情况,处理如下:

 

语法:

array_reduce(array, function, [init], [offset], [length]);

参数类型描述
arrayArray要使用的数组
functionFunction用于每个元素的函数
initAny可选 用作第一个进位值的初始值。如果未提供,则默认为 array[offset] ,并跳过第一次迭代。
offsetReal可选 数组中的偏移量或起始索引。设置负值将从数组的末尾开始计数。然后,起始索引将是 array_length(array) + offset。请参阅 偏移量和长度
lengthReal可选 要遍历的元素数。负值将向后遍历数组(即按索引的降序排列,例如 2>1>0 而不是 0>1>2)。请参阅 偏移量和长度

 

返回:

Any

 

例子:

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,该函数返回 previouscurrent 参数中较小的一个。

最后,它使用 _min_value 作为回调函数,对数组调用 arrayReduce,并将最终结果存储在临时变量 value 中。此变量将包含 1,因为这是数组中的最小值。