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

JavaScript 數(shù)組匯總

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-25

■知識(shí)點(diǎn)

使用reduce方法可以對(duì)數(shù)組中的所有元素調(diào)用指定的回調(diào)函數(shù)。該回調(diào)函數(shù)的返回值為累積結(jié)果,并且此返回值在下一次調(diào)用該回調(diào)函數(shù)時(shí)作為參數(shù)提供。 

array.reduce(callbackfn[, initialValue])

參數(shù)說(shuō)明如下。

    callbackfn:對(duì)于數(shù)組中的每個(gè)元素,reduce方法都會(huì)調(diào)用callbackfh函數(shù)一次。

    initialValue:可選參數(shù)。如果指定initialValue,則它將用作初始值來(lái)啟動(dòng)累積。第1次調(diào)用

    callbackfn函數(shù)會(huì)將此值作為參數(shù)而非數(shù)組值提供。

    如果提供了參數(shù)initialValue,則reduce方法會(huì)對(duì)數(shù)組中的每個(gè)元素調(diào)用一次callbackfn函數(shù)(按升序索引順序)。如果未提供initialValue,則reduce方法會(huì)對(duì)從第2個(gè)元素開(kāi)始的每個(gè)元素調(diào)用callbackfn函數(shù)。


回調(diào)函數(shù)的語(yǔ)法如下:

    function callbackfn(previousValue, currentValue, currentlndex, array)

回調(diào)函數(shù)的參數(shù)說(shuō)明如下。

    previousValue:通過(guò)上一次調(diào)用回調(diào)函數(shù)獲得的值。如果向reduce方法提供initialValue,則在 首次調(diào)用函數(shù)時(shí),previousValue 為 initialValue。 currentValue:當(dāng)前數(shù)組元素的值。

    currentlndex:當(dāng)前數(shù)組元素的數(shù)字索引。

    array:包含該元素的數(shù)組對(duì)象。

reduceRight與reduce方法用法相同,不過(guò)它是從右向左對(duì)數(shù)組中的所有元素調(diào)用指定的回調(diào)函數(shù)。該回調(diào)函數(shù)的返回值為累積結(jié)果。

■實(shí)例設(shè)計(jì)

【示例1】下面的示例演示了將數(shù)組值連接成字符串,各個(gè)值用“::”分隔開(kāi)。由于未向reduce方法提供初始值,第1次調(diào)用回調(diào)函數(shù)時(shí)會(huì)將“abc”作為previousValue參數(shù),同時(shí)并將“def”作為currentValue 參數(shù)。

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】下面的示例向數(shù)組中添加值。currentlndex和array參數(shù)用于回調(diào)函數(shù)。

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】下面的示例獲取一個(gè)數(shù)組,該數(shù)組僅包含另一個(gè)數(shù)組中的介于1?10的值,提供給reduce方法的初始值是一個(gè)空數(shù)組。

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方法,以"::"為分隔符,從右到左把數(shù)組元素的值連接在一起。

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ù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部