位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 数组汇总

提问人:刘团圆发布时间:2020-11-25

■知识点

使用reduce方法可以对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。 

array.reduce(callbackfn[, initialValue])

参数说明如下。

    callbackfn:对于数组中的每个元素,reduce方法都会调用callbackfh函数一次。

    initialValue:可选参数。如果指定initialValue,则它将用作初始值来启动累积。第1次调用

    callbackfn函数会将此值作为参数而非数组值提供。

    如果提供了参数initialValue,则reduce方法会对数组中的每个元素调用一次callbackfn函数(按升序索引顺序)。如果未提供initialValue,则reduce方法会对从第2个元素开始的每个元素调用callbackfn函数。


回调函数的语法如下:

    function callbackfn(previousValue, currentValue, currentlndex, array)

回调函数的参数说明如下。

    previousValue:通过上一次调用回调函数获得的值。如果向reduce方法提供initialValue,则在 首次调用函数时,previousValue 为 initialValue。 currentValue:当前数组元素的值。

    currentlndex:当前数组元素的数字索引。

    array:包含该元素的数组对象。

reduceRight与reduce方法用法相同,不过它是从右向左对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果。

■实例设计

【示例1】下面的示例演示了将数组值连接成字符串,各个值用“::”分隔开。由于未向reduce方法提供初始值,第1次调用回调函数时会将“abc”作为previousValue参数,同时并将“def”作为currentValue 参数。

function f (pre, curr) {

    return pre + n::n + curr;

}

var a = ["abc", ndef", 123, 456]; 

var r = a.reduce(f);

console.log(r);                    //abc::def::123::456

【示例2】下面的示例向数组中添加值。currentlndex和array参数用于回调函数。

function f(pre, curr, i, array) {

    var e = (array.length - 1) - i; 

    var d = curr * Math.pow(10, e);

    return pre + d;

}

var a = [4, 1, 2, 5]; 

var r = a.reduce(f, 0);

console.log (r);    //4125

【示例3】下面的示例获取一个数组,该数组仅包含另一个数组中的介于1〜10的值,提供给reduce方法的初始值是一个空数组。

function f(pre, curr) {

    var next;

    if (curr >= 1 && curr <= 10) 

        next = pre.concat(curr);

    else

        next = pre;

        return next;

}

var al = [20, 1, -5, 6, 50, 3]; 

var a = new Array(); 

var r = al.reduce(f, a);

console.log(r);             //l,6,3

【示例4】下面的示例使用了 reduceRight方法,以"::"为分隔符,从右到左把数组元素的值连接在一起。

function f (pre, curr) {

    return pre + "::" + curr;

}

var a = ["abcn,"def", 123, 456]; 

var r = a.reduceRight(f);

console.log(r);             //456::123::def::abc

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部