map():返回一個新數組,數組中的元素爲原始數組元素調用函數處理後的值,map()方法按照原始數組元素順序依次處理元素
map方法會給原數組中的每個元素都按順序調用一次callback函數,callback每次執行後的返回值(包括undefined)組合起來形成一個新數組。callback函數只會在有值的索引上被調用,那些從來沒被賦過值或者使用delete刪除的索引則不會被調用。
使用map方法處理數組時,數組元素的範圍是在callback方法第一次調用之前就已經確定了。在map方法執行的過程中,原數組中新增加的元素將不會被callback訪問到,若已經存在的元素被改變或刪除了,則他們傳遞到callback的值是map方法遍歷到他們的那一刻的值,而被刪除的元素將不會被訪問到。
語法:
array.map(function(value, index, arr),thisValue)
下面是參考的菜鳥教程上的圖:
例如:
var arr = [1,2,3,4,5,6,7];
var ar = arr.map(function(elem){
return elem*4;
});
對於操作的數組每一個變量都是對象的話,可以使用下面的方式
let r = res.map(item => {
return {
title: item.name,
sex: item.sex === 1? '男':item.sex === 0?'女':'保密',
age: item.age,
avatar: item.img
}
})
也可以省略return
const users=res.items.map(item => ({
url: item.html_url,
img: item.avatar_url,
name: item.login,
})
);
上面的我的理解是由於操作的數組的每一個元素都是對象,所以使用了return 加大括號,而下面的大括號外面加了小括號,表明是一個函數表達式,是又返回值的,我是這樣理解的,不知道對不對。
最下面那個好像是高級特性:
//加括號的函數體返回對象字面表達式:
參數=> ({foo: bar})
//支持剩餘參數和默認參數
(參數1, 參數2, …rest) => {函數聲明}
(參數1 = 默認值1,參數2, …, 參數N = 默認值N) => {函數聲明}
參考連接