
map() 方法創(chuàng)建一個新數(shù)組,其結(jié)果是該數(shù)組中的每個元素調(diào)用一個提供的函數(shù)。
語法
const new_array = arr.map(callback[, thisArg])
參數(shù)
- callback 生成新數(shù)組元素的函數(shù),使用三個參數(shù):
- currentValue callback 的第一個參數(shù),數(shù)組中正在處理的當前元素。
- index callback 的第二個參數(shù),數(shù)組中正在處理的當前元素的索引。
- array callback 的第三個參數(shù),map 方法被調(diào)用的數(shù)組。
- thisArg 可選的。執(zhí)行 callback 函數(shù)時 使用的this 值。
返回值
一個新數(shù)組,每個元素都是回調(diào)函數(shù)的結(jié)果。
描述
map 方法會給原數(shù)組中的每個元素都按順序調(diào)用一次 callback 函數(shù)。callback 每次執(zhí)行后的返回值(包括 undefined)組合起來形成一個新數(shù)組。 callback 函數(shù)只會在有值的索引上被調(diào)用;那些從來沒被賦過值或者使用 delete 刪除的索引則不會被調(diào)用。
callback 函數(shù)會被自動傳入三個參數(shù):數(shù)組元素,元素索引,原數(shù)組本身。
如果 thisArg 參數(shù)有值,則每次 callback 函數(shù)被調(diào)用的時候,this 都會指向 thisArg 參數(shù)上的這個對象。如果省略了 thisArg 參數(shù),或者賦值為 null 或 undefined,則 this 指向全局對象 。
map 不修改調(diào)用它的原數(shù)組本身(當然可以在 callback 執(zhí)行時改變原數(shù)組)。
使用 map 方法處理數(shù)組時,數(shù)組元素的范圍是在 callback 方法第一次調(diào)用之前就已經(jīng)確定了。在 map 方法執(zhí)行的過程中:原數(shù)組中新增加的元素將不會被 callback 訪問到;若已經(jīng)存在的元素被改變或刪除了,則它們的傳遞到 callback 的值是 map 方法遍歷到它們的那一時刻的值;而被刪除的元素將不會被訪問到。
demo
// 全部乘2
var mapArray = [1,2,3].map(function(x){
return x * 2;
})
console.log(mapArray.join(','));
//2,4,6
// 重新整理數(shù)組中的對象
var jsonArray = [
{
key:'zhangsan',
value:0,
},{
key:'lisi',
value:1
},{
key:'wangwu',
value:2
}
];
console.log(jsonArray.map(function(x){
var temp = {};
temp[x.key] = x.value;
return temp;
}));
// {
// zhangsan:0,
// lisi:1,
// wangwu:2
// }