亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中的reduce()如何使用

發布時間:2023-04-27 15:46:03 來源:億速云 閱讀:90 作者:iii 欄目:開發技術

本篇內容主要講解“JavaScript中的reduce()如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JavaScript中的reduce()如何使用”吧!

    reduce():

    reduce()方法為歸并類方法,最常用的場景就是,計算數組中的每一項的總和。

    reduce() 方法會遍歷數組的每一項,他接收兩個參數:

    第一個參數:每次遍歷都會調用的函數,而這個函數有接收四個參數,分別是:前一個值、當前項、項目的索引和數組對象,而這個函數的返回值,回傳給下一次遍歷時,執行的這個方法的第一個參數。

    第二個參數:歸并基礎的初始值

    我們看一下例子: reduce()怎么用?

     let arr = [1,2,3,4,5]
     arr.reduce((prev,cur)=>{
          return prev+cur
     })

    上面的這段代碼,是用來計算數組總和的,reduce()方法中,只傳了第一個參數,也就是只傳了一個函數,但第二個參數、初始值沒有傳,當第二個值沒有傳的時候,第一次循環,prev的值,默認為數組的第一項,而cur的值為數組的第二項,也就是第一次循環,會return 1+2,這個時候,第一次循環返回的結果回傳給下一次循環中方法的第一個參數,也就是說、第二次循環方法中prev的值,是第一次循環方法返回的結果

    let arr = [1,2,3,4,5]
    arr.reduce((prev,cur)=>{
        return prev+cur
    },10)

    我們傳入一下第二個參數,第一個循環,prev的值為reduce的第二個參數,也就是"歸并基礎的初始值",而cur的值為數組的第一項,第一項循環會返回10+1

    總結:

    1.當reduce()方法的第二個值為空時,第一次循環方法中的第一個參數(prev)為數組的第一項值,第二個參數(cur)為數組的第二項值,反之,第一次循環方法中的第一個參數(prev)為reduce的第二個參數值,第二個參數(cur)為數值的第一項值。

    2.reduce()方法的第一個參數,就是每次遍歷都會執行的匿名函數,當前函數的返回值就會傳給下一次執行函數的第一個值。也就是prev

    reduce 應用場景:

    1.數組里所有值的和

          var arr = [0,1,2,3];
     
          var value = arr.reduce((pre, cur) => {
            return pre + cur;
          }, 0);
          
          console.log(value);// 輸出:6

    2.累加數組中對象的值

          var arr = [{ x: 1 }, { x: 2 }, { x: 3 }];
     
          var value = arr.reduce((pre, cur) => {
            return pre + cur.x;
          }, 0);
          
          console.log(value);// 輸出:6

    3.將二維數組轉為一維數組

          var arr = [
            [0, 1],
            [2, 3],
            [4, 5],
          ];
     
          var value = arr.reduce((pre, cur) => {
            return pre.concat(cur);
          }, []);
     
          console.log(value); // 輸出:[0, 1, 2, 3, 4, 5]

    4.計算數組中每個元素出現的次數

          var arr = ["a", "b", "a", "c", "c", "c"];
     
          var value = arr.reduce((pre, cur) => {
            if (cur in pre) {
              pre[cur]++;
            } else {
              pre[cur] = 1;
            }
            return pre;
          }, {});
     
          console.log(value); // 輸出:{a: 2, b: 1, c: 3}

    5.按屬性對object分類

          var people = [
            { name: "tom", age: 17, birthYear: 2021 },
            { name: "tony", age: 21, birthYear: 2021 },
            { name: "bob", age: 18, birthYear: 2020 },
            { name: "bob", age: 18, birthYear: 2021 },
            { name: "bob", age: 18, birthYear: 2019 },
          ];
     
          function groupBy(arr, property) {
            if (!Array.isArray(arr)) return [];
     
            return arr.reduce((pre, obj) => {
              var newObj = {
                [property]: obj[property],
                data: [obj],
              };
     
              if (!pre.length) {
                return [newObj];
              }
     
              for (let i = 0; i < pre.length; i++) {
                let item = pre[i];
                if (item[property] === obj[property]) {
                  item.data = [...item.data, obj];
                  return pre;
                }
              }
              return [...pre, newObj];
            }, []);
          }
     
          var value = groupBy(people, "birthYear");

    返回值:

    JavaScript中的reduce()如何使用

    6.數組去重:

          var arr = [1, 2, 3, 2, 2, 3, 5, null, null, 0, false, false, true];
     
          var value = arr.reduce((pre, cur) => {
            return pre.includes(cur) ? pre : pre.concat(cur);
          }, []);
     
          console.log(value);//[1, 2, 3, 5, null, 0, false, true]

    附:reduce的高級用法

    (1)計算數組中每個元素出現的次數
    let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
    let nameNum = names.reduce((pre,cur)=>{
      if(cur in pre){
        pre[cur]++
      }else{
        pre[cur] = 1 
      }
      return pre
    },{})
    console.log(nameNum); //{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}
    
    
    (2)數組去重
    let arr = [1,2,3,4,4,1]
    let newArr = arr.reduce((pre,cur)=>{
        if(!pre.includes(cur)){
          return pre.concat(cur)
        }else{
          return pre
        }
    },[])
    console.log(newArr);// [1, 2, 3, 4]
    
    (3)將二維數組轉化為一維
    
    let arr = [[0, 1], [2, 3], [4, 5]]
    let newArr = arr.reduce((pre,cur)=>{
        return pre.concat(cur)
    },[])
    console.log(newArr); // [0, 1, 2, 3, 4, 5]
    (3)將多維數組轉化為一維
    
    let arr = [[0, 1], [2, 3], [4,[5,6,7]]]
    const newArr = function(arr){
       return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
    }
    console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7]
    
    (4)、對象里的屬性求和
    var result = [
        {
            subject: 'math',
            score: 10
        },
        {
            subject: 'chinese',
            score: 20
        },
        {
            subject: 'english',
            score: 30
        }
    ];
    
    var sum = result.reduce(function(prev, cur) {
        return cur.score + prev;
    }, 0);
    console.log(sum) //60

    到此,相信大家對“JavaScript中的reduce()如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    长白| 安新县| 龙门县| 九龙县| 伊宁市| 买车| 西吉县| 来凤县| 塔城市| 大悟县| 界首市| 龙里县| 法库县| 瑞安市| 扎囊县| 石屏县| 银川市| 当雄县| 小金县| 建阳市| 冀州市| 闵行区| 阳曲县| 平顺县| 桃园市| 吉隆县| 即墨市| 海阳市| 乌兰察布市| 家居| 资源县| 连云港市| 察隅县| 镇赉县| 泰州市| 孝昌县| 玉溪市| 阿克苏市| 渑池县| 富宁县| 崇文区|