在JavaScript中,map()函數是一個非常重要的函數之一。它可以將一個數組中的每個元素按照給定的規則進行轉換,並輸出一個新的數組。map()函數可以很好的節省代碼量,並且可以為開發者提高工作效率。下面,我們將從多個方面對它進行詳細的闡述。
一、map()函數的基本用法
1、map()函數返回一個新的數組。新數組的元素是原數組調用函數處理後的結果。
let arr = [1, 2, 3] let newArr = arr.map((item) => { return item * 2 }) console.log(newArr) // 輸出 [2, 4, 6]
2、map()函數的參數是一個函數,在這個函數中可以對原數組的每個元素進行操作,並返回一個新的值。這個新的值將會被添加到新數組中。
let arr = [1, 2, 3] let newArr = arr.map((item, index, array) => { return item * index }) console.log(newArr) // 輸出 [0, 2, 6]
3、map()函數的第二個參數是一個可選參數。它用來指定函數中this的指向。
let obj = { a: 10, b: 20 } let arr = [1, 2, 3] let newArr = arr.map(function(item) { return item * this.a + this.b }, obj) console.log(newArr) // 輸出 [30, 40, 50]
二、map()函數的應用場景
1、將一個數組中每個元素中的某個屬性提取出來,生成一個新的數組。
let arr = [ {name: 'Tony', age: 20}, {name: 'Linda', age: 18}, {name: 'Allen', age: 25} ] let nameArr = arr.map((item) => { return item.name }) console.log(nameArr) // 輸出 ['Tony', 'Linda', 'Allen']
2、將一個數字數組中的每個數值按照一定規則進行轉換。
let arr = [1, 2, 3] let StringArr = arr.map((item) => { return String(item) }) console.log(StringArr) // 輸出 ['1', '2', '3']
3、對一個數字數組中的每個數值進行平方。
let arr = [1, 2, 3] let squareArr = arr.map((item) => { return item ** 2 }) console.log(squareArr) //輸出[1, 4, 9]
三、map()函數的性能考慮
我們可以看到map()函數對於數組的性能影響較小,但是對於函數本身的性能卻有較大的影響。我們需要盡量避免在map()函數內部使用複雜計算,尤其是需要進行大量循環的情況。我們應該將這些複雜計算在外部完成後再傳入map()函數中進行操作。
比如:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] let newArr = [] for(let i = 0; i < arr.length; i++) { newArr.push(arr[i] * 2) } console.log(newArr)
比以下map()函數要快得多:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] let newArr = arr.map((item) => { return item * 2 }) console.log(newArr)
四、map()函數與其他函數的比較
1、forEach()函數
forEach()函數與map()函數類似,都是遍曆數組並對每個元素進行一定的操作。但是,forEach()函數無法返回一個新的數組,也就是說,如果我們需要返回一個新數組,我們要使用map()函數。
let arr = [1, 2, 3] arr.forEach((item) => { console.log(item) })
2、reduce()函數
reduce()函數也是對數組的元素進行遍歷並對其進行操作。它的主要區別是可以將數組的所有值按照預定規則進行歸併。reduce()函數可以實現更複雜的操作,但是它的可讀性較低,使用起來相對困難。
let arr = [1, 2, 3] let sum = arr.reduce((prev, next) => { return prev + next }) console.log(sum) // 輸出 6
五、使用場景舉例
1、使用map()函數實現字符串去重
let str = 'hello world' let arr = str.split('') let newArr = arr.map((item, index, array) => { return array.indexOf(item) === index ? item : '' }) let newStr = newArr.join('') console.log(newStr) // 輸出 'helo wrld'
2、使用map()函數實現數組乘法
let arr1 = [1, 2, 3] let arr2 = [4, 5, 6] let newArr = arr1.map((item, index, array) => { return item * arr2[index] }) console.log(newArr) // 輸出 [4, 10, 18]
六、總結
map()函數是JavaScript中的一個重要函數,它可以大大提高開發者的工作效率。我們可以將它應用在許多場景中,比如數組去重、數組乘法等等。同時,我們也應該注意map()函數的性能問題,將複雜計算盡量放在函數外部進行完成。
原創文章,作者:JSNV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144216.html