reduce優秀

高舉reduce大旗,優秀

1、語法
arr.reduce(callback,[initialValue])
reduce 爲數組中的每一個元素依次執行回調函數,不包括數組中被刪除或從未被賦值的元素,接受四個參數:初始值(或者上一次回調函數的返回值),當前元素值,當前索引,調用 reduce 的數組。

callback (執行數組中每個值的函數,包含四個參數)

    1、previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue))
    2、currentValue (數組中當前被處理的元素)
    3、index (當前元素在數組中的索引)
    4、array (調用 reduce 的數組)

initialValue (作爲第一次調用 callback 的第一個參數。)
<script>
    // var arr = [1,2,3,4];
    var arr = [];
    var sum = arr.reduce(function(prev,cur,index,arr){
        console.log(prev,cur,index);
        return prev+cur;
    },0)//initialValue初始值,如果數組爲空的話,在沒有初始值的情況下,會報錯。提供初始值會更安全。
    console.log(arr,sum);

    //求和,求積
    var arr1 = [1,2,4,4,5];
    var sum1= arr1.reduce((x,y)=>x+y);
    var mul = arr1.reduce((x,y)=>x*y);
    console.log(sum1);
    console.log(mul);

    //計算數組中每個元素出現的次數
    var arr2 = ["a","b","c","b","a","a"];
    let ascnum = arr2.reduce((pre,cur)=>{
        if(cur in pre){
            pre[cur]++;
        }else{
            pre[cur] = 1;
        }
        return pre;
    },{})
    console.log(ascnum);

    //數組去重
    let arr3 = [3,5,5,3,2,2,3,5,2];
    let newarr = arr3.reduce((pre,cur)=>{
        if(!pre.includes(cur)){//includes() 方法用來判斷一個數組是否包含一個指定的值,如果是返回 true,否則false。
            return pre.concat(cur);//concat() 方法用於連接兩個或多個數組。該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。
        }else{
            return pre;
        }
    },[])
    console.log(newarr);

    //二維數組轉化爲一維
    let arr4 = [[1,3],[3,5],[3,6]];
    const newarr1 = arr4.reduce((pre,cur)=>{
        return pre.concat(cur);
    },[])
    console.log(newarr1);

    //將多維數組轉化爲一維
    let arr5 = [[1,3,4],[3,4,[5,6,7]]];
    const newarr2 = function(arr5){
        return arr5.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newarr2(cur):cur),[]);
    }
    console.log(newarr2(arr5));

    //對象裏的屬性求和
    var result = [
        {
            name:"zhangsan",
            age:7
        },
        {
            name:"lisi",
            age:9
        },
        {
            name:"wangwu",
            age:20
        }
    ];
    var sum = result.reduce((prev,cur)=>{
        return cur.age + prev;
    },0);
    console.log(sum)
</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章