首頁  >  文章  >  web前端  >  javascript 陣列操作詳解

javascript 陣列操作詳解

高洛峰
高洛峰原創
2017-02-06 10:09:341168瀏覽

1、陣列的建立

var arrayObj = new Array(); //建立一個陣列
var arrayObj = new Array([size]); //建立一個陣列並指定長度,注意不是上限,是長度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 創建一個數組並賦值

    要說明的是,雖然第二種方法創建數組指定了長度,但實際上所有情況下數組都是變長的,也就是說即使指定了長度為5,仍然可以將元素儲存在規定長度以外的,注意:這時長度會隨之改變。

2、陣列的元素的存取

var testGetArrValue=arrayObj[1]; //取得陣列的元素值
arrayObj[1]= "這是新值"; //給予陣列元素一個新的值

3.陣列元素的新增

arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 將一個或多個新元素加入陣列結尾,並傳回陣列新長度
arrayObj. unshift([item1 [item2 [. . . [itemN ]]]]);// 將一個或多個新元素新增至陣列開始,陣列中的元素自動後移,傳回陣列新長度
arrayObj.splice(insertPos ,0,[item1[, item2[, . . . [,itemN]]]]);//將一個或多個新元素插入到陣列的指定位置,插入位置的元素自動後移,返回""。

4、陣列元素的刪除

arrayObj.pop(); //移除最後一個元素並傳回該元素值
arrayObj.shift(); //移除最前面一個元素並傳回該元素值,陣列中元素自動前移
arrayObj.splice(deletePos,deleteCount); //刪除從指定位置deletePos開始的指定數量deleteCount的元素,數組形式傳回所移除的元素

5、數組的截取和合併

arrayObj. slice(start, [end]); //以陣列的形式傳回陣列的一部分,注意不包含end 對應的元素,如果省略end 將複製start 之後的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //將多個數組(也可以是字串,或者是數組和字串的混合)連接為一個數組,返回連接好的新的數組

6、陣列的拷貝

arrayObj.slice(0); //傳回數組的拷貝數組,注意是一個新的數組,不是指向
arrayObj.concat(); //傳回數組的拷貝數組,注意是一個新的數組,不是指向

7、陣列元素的排序

arrayObj.reverse(); //反轉元素(最前面的排到最後、最後的排到最前),返回陣列位址
arrayObj.sort(); //將陣列元素排序,傳回陣列位址

8、陣列元素的字串化

arrayObj.join(separator); //傳回字串,這個字串將陣列的每一個元素值連結在一起,中間用separator隔開。
toLocaleString 、toString 、valueOf:可視為join的特殊用法,不常用

二、陣列物件的3個屬性

1、length 屬性

    Length屬 性表示其中一個數字的長度,即其中一個數字的長度,即數個元素的長度,即數個元素的長度,即其中一個數字的長度。因為陣列的索引總是由0開始,所以一個陣列的上下限分別是:0和length-1。和其他大多數語言不同的 是,JavaScript數組的length屬性是可變的,這一點需要特別注意。當length屬性被設定得更大時,整個數組的狀態事實上不會發生變化, 僅僅是length屬性變大;當length屬性被設定得比原來小時,則原先數組中索引大於或等於length的元素的值全部被遺失。以下是示範改變 length屬性的範例:

var arr=[12,23,5,3,25,98,76,54,56,76];
//定义了一个包含10个数字的数组
alert(arr.length); //显示数组的长度10
arr.length=12; //增大数组的长度
alert(arr.length); //显示数组的长度已经变为12
alert(arr[8]); //显示第9个元素的值,为56
arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃
alert(arr[8]); //显示第9个元素已经变为"undefined"
arr.length=10; //将数组长度恢复为10
alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"

    由 上面的程式碼我們可以清楚的看到length屬性的性質。但length物件不僅可以明確的設置,它也有可能被隱式修改。 JavaScript中可以使用一個未宣告過的變數,同樣,也可以使用一個未定義的陣列元素(指索引超過或等於length的元素),這時,length屬性的值將會被設定為所使用元素索引的值加1。例如下面的程式碼:

var arr=[12,23,5,3,25,98,76,54,56,76];
alert(arr.length);
arr[15]=34;
alert(arr.length);

    代 碼中同樣是先定義了一個包含10個數字的數組,透過alert語句可以看出其長度為10。隨後使用了索引為15的元素,將其賦值為15,即 arr[15]=34,這時再用alert語句輸出數組的長度,得到的是16。無論如何,對於習慣於強型別程式設計的開發人員來說,這是一個很令人驚訝的特 性。事實上,使用new Array()形式建立的數組,其初始長度就是為0,而正是對其中未定義元素的操作,才會使數組的長度改變。

    由上面的介紹可以看到,length屬性是如此的神奇,利用它可以方便的增加或減少數組的容量。因此對length屬性的深入了解,有助於在開發過程中靈活運用。

2、prototype 屬性

傳回物件類型原型的引用。 prototype 屬性是 object 共有的。

objectName.prototype

objectName 參數是object物件的名稱。

說明:用 prototype 屬性提供物件的類別的一組基本功能。 物件的新實例「繼承」賦予該物件原型的操作。

    对于数组对象,以以下例子说明prototype 属性的用途。

    给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。

function array_max( )
{
   var i, max = this[0];
   for (i = 1; i < this.length; i++)
   {
   if (max < this[i])
   max = this[i];
   }
   return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );

该代码执行后,y 保存数组 x 中的最大值,或说 6。

3、constructor 属性

表示创建对象的函数。

object.constructor //object是对象或函数的名称。

说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。

例如:

x = new String("Hi");
if (x.constructor == String) // 进行处理(条件为真)。

function MyFunc {
// 函数体。
}
y = new MyFunc;
if (y.constructor == MyFunc) // 进行处理(条件为真)。

小伙伴们看完之后是否对javascript数组的操作有了新的认识了呢,希望大家能够喜欢本文。

更多javascript 数组操作详解相关文章请关注PHP中文网!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn