JS數(shù)組是一種特殊類型的對象
- 在 JavaScript 中對數(shù)組使用 typeof 運算符會返回 "object"酵紫。
- 不過數(shù)組使用數(shù)字來訪問其“元素”贤重,而沒有命名索引撕彤;
因此源祈,如果希望元素名為字符串(文本)則應該使用對象。
如果希望元素名為數(shù)字則應該使用數(shù)組墓塌。
var person = ["Bill", "Gates", 62];
person[0]; //Bill
- JS數(shù)組中可以存放不同類型的變量瘟忱,包括對象、函數(shù)苫幢、數(shù)組访诱;
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
JS數(shù)組的屬性與方法
-
length
屬性返回數(shù)組的長度(數(shù)組元素的數(shù)目)。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length; // fruits 的長度是 4
-
toString()
把數(shù)組轉(zhuǎn)換為數(shù)組值(逗號分隔)的字符串韩肝。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString(); // Banana,Orange,Apple,Mango
- join() 方法也可將所有數(shù)組元素結合為一個字符串触菜,類似 toString(),但是可以規(guī)定分隔符:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.join(" * "); // Banana * Orange * Apple * Mango
- 向數(shù)組添加新元素的最佳方法是使用
push()
方法哀峻,并返回新數(shù)組的長度::
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.push("Kiwi"); // x 的值是 5
-
pop()
方法從數(shù)組中刪除最后一個元素涡相,返回“被彈出”的值::
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.pop(); // x 的值是 "Mango"
-
shift()
方法會刪除首個數(shù)組元素,并把所有其他元素“位移”到更低的索引剩蟀,返回首個數(shù)組元素催蝗。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift(); // 返回 "Banana"
-
unshift()
方法向數(shù)組首位添加新元素,并返回新數(shù)組的長度育特。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon"); // 返回 5
- JavaScript 數(shù)組屬于對象丙号,因此其中的元素就可以使用 JavaScript
delete
運算符來刪除,但使用 delete
會在數(shù)組留下未定義的空洞。:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
delete fruits[0]; // 把 fruits 中的首個元素改為 undefined
- 使用
splice()
能夠在數(shù)組中不留“空洞”的情況下移除元素犬缨,同時可以設置后續(xù)參數(shù)以在指定位置刪除指定數(shù)量元素后添加新元素喳魏,返回刪除項:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1); // 刪除 fruits 中的第一個元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 2, "Lemon", "Kiwi"); //數(shù)組元素變?yōu)锽anana,Orange,Lemon,Kiwi 返回值為Apple,Mango
- 使用
concat()
方法合并數(shù)組,不會改變現(xiàn)有數(shù)組怀薛,返回合并后的數(shù)組刺彩,可以使用任意數(shù)量的數(shù)組參數(shù):
var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3); // 將arr1、arr2 與 arr3 連接在一起
-
slice()
方法用數(shù)組的某個片段切出新數(shù)組枝恋,返回創(chuàng)建新數(shù)組迂苛,它不會從源數(shù)組中刪除任何元素」脑瘢可接受兩個參數(shù),比如 (1, 3)就漾。
該方法會從開始參數(shù)選取元素呐能,直到結束參數(shù)(不包括)為止。如果結束參數(shù)被省略抑堡,則會切出數(shù)組的剩余部分摆出。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);
- 遍歷數(shù)組的最安全方法是使用 "for" 循環(huán),此外使用
Array.foreach()
可以對數(shù)組的每個元素調(diào)用相同函數(shù):
var fruits, text;
fruits = ["Banana", "Orange", "Apple", "Mango"];
text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function myFunction(value) {
text += "<li>" + value + "</li>";
}
- 沒有必要使用 JavaScript 的內(nèi)建數(shù)組構造器
new Array()
首妖,使用[]
偎漫。
如何識別JS數(shù)組
- ECMAScript 5 定義了新方法 Array.isArray():
此方案的問題在于 ECMAScript 5 不支持老的瀏覽器。
Array.isArray(fruits); // 返回 true
- 借助對象原型來編寫識別函數(shù):
假如參數(shù)對象原型包含單詞 "Array"有缆,則下面的函數(shù)始終返回 true象踊。
function isArray(x) {
return x.constructor.toString().indexOf("Array") > -1;
}
- 假如對象由給定的構造器創(chuàng)建,則 instanceof 運算符返回 true:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array // 返回 true