位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 數組匯總

提問人:劉團圓發(fā)布時間: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

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部