中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

javascript數組includes、reduce的基本使用方法

發布時間:2021-07-02 17:18:47 來源:億速云 閱讀:201 作者:chen 欄目:開發技術

這篇文章主要講解了“javascript數組includes、reduce的基本使用方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“javascript數組includes、reduce的基本使用方法”吧!

目錄
  • 前言

  • Array.prototype.includes

    • 語法

    • 參數

    • 返回值

    • 實例

  • Array.prototype.reduce

    • 語法

    • 參數

    • 返回值

  • 總結

    前言

    在過去的幾年中,JavaScript語言進行了多次更新。為了跟上技術更新的腳步,時刻保持一顆學習的心。趁著休息的時間學習熟悉一下數組的includes、reduce的使用。

    Array.prototype.includes

    ES7添加對此方法的支持,includes() 方法用來判斷一個數組是否包含一個指定的值的元素,并返回布爾值true或false,如果包含則返回 true,否則返回 false。

    語法

    arr.includes(valueToFind[, fromIndex])

    參數

    • valueToFind(必須):需要查找的元素值,比較字符串和字符時是區分大小寫。

    • fromIndex(可選):從數組 fromIndex 索引處開始查找 valueToFind。

      • 負數 ,則按升序從 array.length + fromIndex 的索引開始搜 (即使從末尾開始往前跳 fromIndex 的絕對值個索引,然后往后搜尋)。

      • 默認值為 0。

    返回值

    包含則返回 true,否則返回 false。

    實例

    // ES5 Code
    const numbers = ["一", "二", "三", "四"];
    console.log(numbers.indexOf("一") > -1); // true
    console.log(numbers.indexOf("六") > -1); // false
    
    // ES7 Code
    console.log(numbers.includes("一")); // true
    console.log(numbers.includes("六")); // false
    
    console.log(numbers.includes("一",1)); // false,從數組索引為`1`往后找
    console.log(numbers.includes("一", -3)); // true,從 `array.length + fromIndex` 的索引開始完后找,跟上面從索引為1開始等效

    使用 includes 方法可以使代碼簡短易懂。include 方法在比較值時也很方便,如下代碼。

    // 過去
    const day = "星期二";
    if (day === "星期二" || day === "星期三" || day === "星期四") {
        console.log(day);
    }
    
    // 現在
    if (["星期二", "星期三", "星期四"].includes(day)) {
        console.log(day);
    }

    Array.prototype.reduce

    reduce() 方法對數組中的每個元素執行reducer函數(升序執行),將其結果匯總為單個返回值。

    語法

    Array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

    為數組中的每一個元素依次執行callback函數,不包括數組中被刪除或從未被賦值的元素。

    參數

    • callback(必須):執行數組中每個值 (如果沒有提供 initialValue則第一個值除外)的reducer函數,包含四個參數

      • accumulator(必須):累計器累計回調的返回值; 它是上一次調用回調時返回的累積值,初始值可以通過initialValue定義,默認為數組的第一個元素值,累加器將保留上一個操作的值,就像靜態變量一樣

      • currentValue(必須):數組中正在處理的元素

      • index(可選):數組中正在處理的當前元素的索引。 如果提供了initialValue,則起始索引號為 0,否則從索引 1 起始。
        注意:如果沒有提供 initialValue,reduce 會從索引 1 的地方開始執行 callback 方法,跳過第一個索引。如果提供 initialValue,從索引 0 開始。

      • array(可選):調用 reduce() 的數組

    • initialValue(可選):作為第一次調用 callback 函數時的第一個參數的值。 如果沒有提供初始值,則將使用數組中的第一個元素。 在沒有初始值的空數組上調用 reduce 將報錯。

    返回值

    函數累計處理的結果。

    實例

    const arrNumbers = [1, 2, 3, 4, 5];
    const reduceNumbers = (arrayNumbers, accumulatorInitVal = false) => {
        const reduceCallback = (accumulator, currentVal, currentIndex) => {
            console.log(`當前索引:${currentIndex}`);
            return accumulator + currentVal;
        };
        return accumulatorInitVal
            ? arrayNumbers.reduce(reduceCallback, accumulatorInitVal)
            : arrayNumbers.reduce(reduceCallback);
    };
    
    console.log(reduceNumbers(arrNumbers)); // 15,累計器初始值為數組的第一個元素的值1
    console.log(reduceNumbers(arrNumbers, 10)); // 25,累計器初始值為10

    console.log(當前索引:${currentIndex}),是為了更加直觀的看到索引值。

    第一次未定義初始值輸出如下:

    當前索引:1
    當前索引:2
    當前索引:3
    當前索引:4

    第二次定義了累計器初始值輸出如下:

    當前索引:0
    當前索引:1
    當前索引:2
    當前索引:3
    當前索引:4

    接下來我們來看一個奇葩需求,出于某種原因,需要一個包含所有用戶全名的新數組(他們的姓,加上他們的名字),但只有當他們是20多歲,并且他們的全名是3個字的時候才需要。不要問我們為什么需要這么奇葩的數據子集,產品經理問了,我們很樂意幫忙^_^

    const users = [
        {
            firstName: "堅",
            lastName: "孫",
            age: 37,
        },
        {
            firstName: "策",
            lastName: "孫",
            age: 21,
        },
        {
            firstName: "葛亮",
            lastName: "諸",
            age: 28,
        },
        {
            firstName: "備",
            lastName: "劉",
            age: 44,
        },
        {
            firstName: "統",
            lastName: "龐",
            age: 22,
        },
        {
            firstName: "維",
            lastName: "姜",
            age: 19,
        },
        {
            firstName: "伯溫",
            lastName: "劉",
            age: 22,
        },
    ];
    const getFullName = (user) => `${user.lastName}${user.firstName}`;
    const filterByAge = (user) => user.age >= 20 && user.age < 30;
    
    // 常規實現
    const getFilterResult = users
        //  第一步篩選年齡20-30之間的用戶
        .filter((user) => filterByAge(user))
        //  拼接全名
        .map((user) => getFullName(user))
        //  篩選
        .filter((fullName) => fullName.length === 3);
    
    console.log(getFilterResult);   // [ '諸葛亮', '劉伯溫' ]
    
    // 迭代方式實現
    const iterationsFilterResult = (arrayResult, currentUser) => {
        const fullname = getFullName(currentUser);
        if (filterByAge(currentUser) && fullname.length === 3) {
            arrayResult.push(fullname);
        }
        return arrayResult;
    };
    console.log(users.reduce(iterationsFilterResult, []));  // [ '諸葛亮', '劉伯溫' ]

    感謝各位的閱讀,以上就是“javascript數組includes、reduce的基本使用方法”的內容了,經過本文的學習后,相信大家對javascript數組includes、reduce的基本使用方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

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

    AI

    育儿| 丽水市| 获嘉县| 改则县| 司法| 墨江| 内江市| 儋州市| 武胜县| 清流县| 松原市| 新闻| 保靖县| 新余市| 建湖县| 内丘县| 紫阳县| 阿城市| 迭部县| 黄浦区| 太白县| 滁州市| 玉树县| 灵台县| 门头沟区| 龙海市| 昌平区| 封丘县| 万盛区| 阆中市| 东乡族自治县| 孝义市| 伊宁市| 清水县| 淄博市| 灵丘县| 大新县| 繁峙县| 山西省| 浏阳市| 鸡泽县|