JS ES6語法之:map()方法


MDN web docs上面說:

map() 方法創建一個新數組,其結果是該數組中的每個元素都調用一個提供的函數后返回的結果。

並舉了個例子:

var array1 = [1,4,9,16];
const map1 = array1.map(x => x *2);
console.log(map1);

打印結果為:

> Array [2,8,18,32]

而我這樣寫時:

var array1 = [1, 4, 9, 16];
 
const map1 = array1.map(x => {
    if (x == 4) {
        return x * 2;
    }
});
 
console.log(map1);

打印結果為:

> Array [undefined, 8, undefined, undefined]

為什么會出現三個undefined呢?而不是我預期的[1,8,9,16]。

這樣寫只是增加了一個條件,即x的值為4時才乘以2,之所以會出現undefined,是因為map()方法創建了一個新數組,但新數組並不是在遍歷完array1后才被賦值的,而是每遍歷一次就得到一個值。所以,下面這樣修改后就正確了:

var array1 = [1, 4, 9, 16];
 
const map1 = array1.map(x => {
    if (x == 4) {
        return x * 2;
    }
    return x;
});

這里注意箭頭函數有兩種格式:
1.只包含一個表達式,這時花括號和return都省略了。
2.包含多條語句,這時花括號和return都不能省略。

大家可以參考:ES6標准新增了一種新的函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM