場景:
你有一個數組,你想對數組中的每個元素做點事情
例如:
你有一個數組:[1,2,3,4,5,6,7],你想輸出這個數組的每個元素的立方
一種方法是遍歷這個數組,做立方計算后賦給新的數組,像下面這樣:
1 'use strict'; 2 function mySquare(arg){ 3 // return arg * arg * arg; 4 return Math.pow(arg,3); 5 } 6 var myArr = [1,2,3,4,5,6,7]; 7 var myNewArr = []; 8 for(var i in myArr){ 9 myNewArr[i] = mySquare(myArr[i]); 10 } 11 console.log(myNewArr);
但如果用map方法,將更加簡便,像下面這樣:
1 'use strict'; 2 function mySquare(arg){ 3 // return arg * arg * arg; 4 return Math.pow(arg,3); 5 } 6 var myArr = [1,2,3,4,5,6,7]; 7 var myNewArr = myArr.map(mySquare); 8 console.log(myNewArr);
是不是很方便!
map方法的定義如下:
map() 方法返回一個新數組,數組中的元素為原始數組元素調用函數處理后的值
map() 方法按照原始數組元素順序依次處理元素
map() 不會對空數組進行檢測
map() 不會改變原始數組
map語法:
array.map(function(currentValue,index,arr), thisValue)
參數說明:
function(currentValue, index,arr) 必須。函數,數組中的每個元素都會執行這個函數
函數參數:
currentValue 必須。當前元素的值
index 可選。當期元素的索引值
arr 可選。當期元素屬於的數組對象
thisValue 可選。對象作為該執行回調時使用,傳遞給函數,用作 "this" 的值。如果省略了 thisValue ,"this" 的值為 "undefined"
map方法還可以做很多事情:
比如,將數組元素轉換成字符串:
1 'use strict'; 2 var myArr = [1,2,3,4,5,6,7]; 3 var myNewArr = myArr.map(String); 4 console.log(myNewArr);
發揮你的想象,一切皆有可能!