reduce方法應用技巧

定義和用法

reduce() 方法接收一個函數做爲累加器,數組中的每一個值(從左到右)開始縮減,最終計算爲一個值。
注意: reduce() 對於空數組是不會執行回調函數的。html

瀏覽器支持

方法 Chrome Edge Firefox Safari Opera
reduce() Yes 9.0 3.0 4 10.5

語法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

基本用法

基本的數值運算,例如求和:git

var numbers = [65, 44, 12, 4];
numbers.reduce(function(total, currentValue) {
    return total + currentValue;
});

運行一下github

進階應用

數組轉換爲對象

var arr = [{
    n: "小明",
    a: 18,
    s: "男"
}, {
    n: "小紅",
    a: 17,
    s: "女"
}];
arr.reduce(function(total, currentValue, currentIndex) {
    total[currentValue.n] = {
        age: currentValue.a,
        sex: currentValue.s
    };
    return total;
}, {})

運行一下數組

鏈式調用

let pipe = (function() {
    return function(value, context) {
        context = context || window;
        let methods = [];
        let oproxy = new Proxy({}, {
            get(target, methodName) {
                if(methodName === 'get') {
                    return methods.reduce((val, fn) => fn(val, context), value);
                } else {
                    methods.push(context[methodName]);
                    return oproxy;
                }
            }
        });
        return oproxy;
    }
})();

let obj = {
    double: val => val * 2,
    pow: val => val * val

}
pipe(4, obj).double.pow.get //64

運行一下瀏覽器

copyright @ xmwarrior函數

相關文章
相關標籤/搜索