對數組的每個元素調用定義的回調函數并返回包含結果的數組。
## 語法
~~~
array1.map(callbackfn[, thisArg])
~~~
## 參數
|參數|定義|
|--|--|
|array1|必選。 一個數組對象。 |
|callbackfn|必選。 最多可以接受三個參數的函數。 對于數組中的每個元素,map 方法都會調用 callbackfn 函數一次。|
|thisArg|可選。 callbackfn 函數中的 this 關鍵字可引用的對象。 如果省略 thisArg,則 undefined 將用作 this 值。|
## 返回值
一個新數組,其中的每個元素均為關聯的原始數組元素的回調函數返回值。
## 異常
如果 callbackfn 參數不是函數對象,則將引發 TypeError 異常。
~~~
Exception Condition
~~~
## 備注
對于數組中的每個元素,map 方法都會調用 callbackfn 函數一次(采用升序索引順序)。 將不會為數組中缺少的元素調用回調函數。
除了數組對象之外,map 方法可由具有 length 屬性且具有已按數字編制索引的屬性名的任何對象使用。
### 回調函數語法
回調函數的語法如下所示:
function callbackfn(value, index, array1)
你可使用最多三個參數來聲明回調函數。
下表列出了回調函數參數。
|回調參數|定義|
|--|--|
|Value|數組元素的值。|
|index|數組元素的數字索引。|
|array1|包含該元素的數組對象。|
### 修改數組對象
數組對象可由回調函數修改。
下表描述了在 map 方法啟動后修改數組對象所獲得的結果。
|map 方法啟動后的條件|元素是否傳遞給回調函數?|
|--|--|
|在數組的原始長度之外添加元素。|否。|
|添加元素以填充數組中缺少的元素。|是,如果該索引尚未傳遞給回調函數。|
|元素已更改。|是,如果該元素尚未傳遞給回調函數。|
|從數組中刪除元素。|否,除非該元素已傳遞給回調函數。|
## 示例1
下面的示例演示 map 方法的用法。
~~~
// Define the callback function.
function AreaOfCircle(radius) {
var area = Math.PI * (radius * radius);
return area.toFixed(0);
}
// Create an array.
var radii = [10, 20, 30];
// Get the areas from the radii.
var areas = radii.map(AreaOfCircle);
document.write(areas);
// Output:
// 314,1257,2827
~~~
## 示例2
下面的示例闡釋 thisArg 參數的用法,該參數指定 this 關鍵字可引用的對象。
~~~
// Define an object that contains a divisor property and
// a remainder function.
var obj = {
divisor: 10,
remainder: function (value) {
return value % this.divisor;
}
}
// Create an array.
var numbers = [6, 12, 25, 30];
// Get the remainders.
// The obj argument specifies the this value in the callback function.
var result = numbers.map(obj.remainder, obj);
document.write(result);
// Output:
// 6,2,5,0
~~~
## 示例3
在下面的示例中,內置 JavaScript 方法用作回調函數。
~~~
// Apply Math.sqrt(value) to each element in an array.
var numbers = [9, 16];
var result = numbers.map(Math.sqrt);
document.write(result);
// Output: 3,4
示例
map 方法可應用于一個字符串。 下面的示例闡釋了這一點。
JavaScript
// Define the callback function.
function threeChars(value, index, str) {
// Create a string that contains the previous, current,
// and next character.
return str.substring(index - 1, index + 2);
}
// Create a string.
var word = "Thursday";
// Apply the map method to the string.
// Each array element in the result contains a string that
// has the previous, current, and next character.
// The commented out statement shows an alternative syntax.
var result = [].map.call(word, threeChars);
// var result = Array.prototype.map.call(word, threeChars);
document.write(result);
// Output:
// Th,Thu,hur,urs,rsd,sda,day,ay
~~~
- ActiveXObject對象
- Array對象
- constructor屬性
- length屬性
- prototype屬性
- Array.from函數
- Array.isArray函數
- Array.of函數
- concat方法
- entries方法
- every方法
- fill方法
- filter方法
- findIndex方法
- forEach方法
- indexOf方法
- join方法
- keys方法
- lastIndexOf方法
- map方法
- pop方法
- push方法
- reduce方法
- reduceRight方法
- reverse方法
- shift方法
- slice方法
- some方法
- sort方法
- splice方法
- toString方法
- unshift方法
- valueOf方法
- values方法
- ArrayBuffer對象
- byteLength屬性
- ArrayBuffer.isView函數
- slice方法
- arguments對象
- 0...n 屬性(參數)
- callee 屬性(參數)
- length 屬性 (arguments)
- Boolean對象
- constructor 屬性(布爾值)
- prototype 屬性(布爾值)
- toString 方法 (Boolean)
- valueOf 方法 (Boolean)
- DataView對象
- buffer屬性 (DataView)
- byteLength屬性(DataView)
- byteOffset屬性(DataView)
- getInt8方法(DataView)
- getUint8方法(DataView)
- getInt16方法(DataView)
- getUint16方法(DataView)
- getInt32方法(DataView)
- getUint32方法(DataView)
- getFloat32方法(DataView)
- getFloat64方法(DataView)
- setInt8方法(DataView)
- setUint8方法(DataView)
- setInt16方法(DataView)
- setUint16方法(DataView)
- setInt32方法(DataView)
- setUint32方法(DataView)
- setFloat32方法(DataView)
- setFloat64方法(DataView)
- Date對象
- Debug對象
- Enumerator對象
- Error對象
- Float32Array對象
- Float64Array對象
- Function對象
- Global對象
- Int8Array對象
- Int16Array對象
- Int32Array對象
- Intl.Collator對象
- Intl.DateTimeFormat對象
- Intl.NumberFormat對象
- JSON對象
- Map對象
- Math對象
- Number對象
- Object對象
- Promise對象
- 代理對象
- Reflect對象
- RegExp對象
- 正則表達式對象
- Set對象
- String對象
- 符號對象
- Uint8Array對象
- Uint8ClampedArray對象
- Uint16Array對象
- Uint32Array對象
- VBArray對象
- WeakMap對象
- WeakSet對象
- WinRTError對象