好家伙, 1.數組 Array應該就是ECMAScript中最常用的類型了。ECMAScript數組跟其他編程語言的數組有很大區別。 跟其他語言中的數組一樣,ECMAScript 數組也是一組有序的數據, 但跟其他語言不同的是,數組中每個槽位可以存儲任意類型的數據。 這意味著可以創建一個數組,它的第 ...
好家伙,
1.數組
Array應該就是ECMAScript中最常用的類型了。ECMAScript數組跟其他編程語言的數組有很大區別。
跟其他語言中的數組一樣,ECMAScript 數組也是一組有序的數據,
但跟其他語言不同的是,數組中每個槽位可以存儲任意類型的數據。
這意味著可以創建一個數組,它的第一個元素是字元串,第二個元素是數值,第三個是對象。
ECMAScript數組也是動態大小的,會隨著數據添加而自動增長。
2.創建數組
有幾種基本的方式可以創建數組。第一種是使用Array 構造函數,第二種是使用數組字面量
2.1.使用Array 構造函數創建數組
可以直接使用new字元創建,可以傳參,也可以直接傳入要保存的數
let Array_1 = new Array();
//創建length為20的數組
let Array_2 = new Array(20);
Array_3 = new Array("red","blue", "green");
console.log(Array_1,Array_2,Array_3);
2.2.使用數組字面量創建數組
let Array_1 = [];
let Array_2 = [1,2,];
Array_3 = ["red","blue", "green"];
console.log(Array_1,Array_2,Array_3);
此處Array_2仍然是空數組
2.3.Array構造函數好友兩個ES6新增的用於創建數組的靜態方法:from()和of().
from()用於將類數組結構轉換為數組實例,
而of()用於將一組參數轉換為數組實例
console.log(Array.from("Array"));
console.log(Array.of(1,2,3,4,5));
3.數組空位
使用數組字面量初始化數組時,可以使用一串逗號來創建空位(hole)。
ECMcript會將逗號之相應索引位置的值當成空位,ES6規範重新定義了該如何處理這些空位。
const options = [1, , , , 5];
for (const option of options) {
console.log(option === undefined);
}
4.數組索引
跟大部分語言相同,JS的數組索引也是從"0"開始算起的
let colors = ["red", "blue", "green"]; //定義一個字元串數組
console.log(colors[0]);
//顯示第一項
colors[2] = "black";
//修改第三項
colors[3] = "brown";
//添加第四項
console.log(colors);
有意思的是,我們可以使用length屬性不停的向數組末尾添加元素
let colors = ["red", "blue", "green"]; //定義一個字元串數組
for (let i = 2; i <= 10; i++) {
colors[colors.length] = "nocolors";
}
console.log(colors);
(實用小技巧+1)
5.數組檢測
一個經典的ECMAScript問題是判斷一個對象是不是數組。
在只有一個網頁(因而只有一個全局作用域)的情況下,使用instanceof 操作符就足矣:
使用instanceof的問題是假定只有一個全局執行上下文。
如果網頁里有多個框架,則可能涉及兩個不同的全局執行上下文,因此就會有兩個不同版本的Array 構造函數。
如果要把數組從一個框架傳給另一個框架,則這個數組的構造函數將有別於在第二個框架內本地創建的數組。
為解決這個問題,ECMAScript提供了Array.isArray()方法.這個方法的目的就是確定一個值是否為數組,
而不用管它是在哪個全局執行上下文中創建的
let colors = ["red", "blue", "green"]; //定義一個字元串數組
console.log(Array.isArray(colors))
6.迭代器方法
在ES6中,Array的原型上暴露了3個用於檢索數組內容的方法:keys(),values()和entries()。
方法一: keys()返回數組索引的迭代器,
方法二: values()返回數組元素的選代器,
方法三: entries()返回索引/值對的迭代器:
let colors = ["red", "blue", "green"]; //定義一個字元串數組
let colorskeys= Array.from(colors.keys());
let colorsvalues =Array.from(colors.values());
let colorsentries= Array.from(colors.entries());
console.log(colorskeys);
console.log(colorsvalues);
console.log(colorsentries);
(好用直觀)