一、定義
map() 方法返回一個新數組,不會改變原始數組。同時新數組中的元素為原始數組元素調用函數處理后的值,並按照原始數組元素順序依次處理元素。
注意:map() 不會對空數組進行檢測。
二、語法
array.map(function(currentValue,index,arr), thisValue)

四、ES6書寫
let r = res.map(item => { return { title: item.name, sex: item.sex === 1? '男':item.sex === 0?'女':'保密', age: item.age, avatar: item.img } })
var arr = [1,2,3,4];
arr.map((item,index,arr) => {
return item*10 //新數組為10,20,30,40
})
//map遍歷數組,返回一個新數組,不改變原數組的值。
五、補充
查map的時候,發現了一個帖子問map里面的this指的是啥,感覺沒太明白,關於this,真是個頭疼的問題,需要深入研究。
先保存上有一個人的回答,以備不時之需。看起來說的好像能明白似的。
array.map(callback, this) 中的this:把this僅僅當做一個參數,即函數的實參。所以實參具體是什么要看它的聲明、定義以及值。舉個例子: var object = {} array.map(callback, object) 也就是說對於map方法而言,在實際用的時候,它的第二個參數是一個前面已經聲明過的變量。但是如果你傳入this,那么這個this就要往前找,往它所在的上一級作用域去找,如果可以找到對應的實例化對象,那么就是這個實例化對象了,如果找不到,那就指向了全局對象。 還是要舉個栗子: var array = [1,2,3] var a = { mapObject: function() { array.map(function(){}, this) // 這個時候的this是什么呢?是a啊! } } 而如果不是在一個實例化對象里面: array.map(function(){}, this) // this是window或者global啊! 至於你里面console.log(this)為什么是window,你就得知道.bind,比如: !function(){ console.log(this.name) }.bind({ name: "Sam" }) bind, call, apply的作用都是讓函數里面的this指向給定的一個對象。 array.map(function() {}, this) 的作用實際上和 array.map(function() {}.bind(this)) 是一樣的。map的第二個參數就是給第一個參數bind一個對象,這樣在第一個參數里面就可以用this代替第二個參數。 回到你的題目中,前面第一個this其實就是指向了window,而function里面的this指向的是map的第二個參數,所以繞了一圈,還是指向了window. this指向的一個小竅門:this指向的是當前作用域所屬實例化對象,如果沒有找到該對象,則是指向window。