Array型別及其常用的方法

2022-09-21 12:06:07 字數 4797 閱讀 1874

array型別可以說算是 js 中最常用的型別了,在ecmscript中的陣列和其他型別語言中的陣列有著很大的區別。ecmscript中的陣列的每一項可以儲存任何型別的資料,也就是陣列的第一項可以是字串,第二項可以是數字。而且ecmscript中的陣列是可以進行動態調整的,可以隨著資料的增加自動調整陣列的大小來容納新的資料。

1. var names = new array(); 如果事先知道陣列要儲存的數量,也可以使  var names = new array(20); 來建立乙個長度20的陣列。

2.  var names = array(3); array的建構函式也可以省略new,但是需要注意的是想 ayyay() 中傳遞的是數值,則會按照這個數值長度進行建立對應長度的陣列,如果傳遞的是其他型別引數,則會建立乙個只包含這個值的陣列。

如:var names = array('lihua') ; // 建立乙個字串 ['lihua'] 陣列。

3. var namse = ; 直接使用數字字面量表示,多個元素之間用 ,進行分隔。 例如 var names = [1,2]會建立乙個兩項的陣列,var names = [,,,,,]這樣會建立乙個包含6或7項的陣列,一版不要這樣去寫,在不同的瀏覽器中可以會建立不同的項數,在元素的結束後不需要在跟, 。

陣列的length屬性

比較有特點,他不是乙個唯讀的屬性,可以通過設定這個屬性,可以從陣列的末尾移除屬性,或者向陣列中新增項

如:var colors = ['ble', 'green', 'red']; colors.length = 2; console.log(colors[2]) // undefined

1. if(value instanceof array)

instanceof 用於檢測乙個物件是不是某個類的例項,陣列也是一種物件所以也可以利用 instaceof 來進行判斷。

instanceof操作符的問題在於,它假定只有乙個全域性執行環境。如果在網頁中包含多個框架,那麼實際上就存在兩個以上不同的全域性執行環境,從而構造兩個不同版本的 array 建構函式。如果你從乙個框架向另外乙個框架傳入乙個陣列,那麼傳入的陣列和第二個框架中原生建立的陣列分別具有各自不同的建構函式。

2. array.isarray(value)

es5 新增的方法,也是比較常用的判斷陣列的方法,不管它是哪個全域性環境中建立的。

3. constructor處理

if(value

.constructor === array) 因陣列中可以通過new array的方式進行建立,因此也可以通過value.constructor來獲取他的建構函式判斷是不是陣列,但是此方法和 1 有同樣問題

4. object.prototype.tostring.call()

if(object.prototype.tostring.call(arr) === "[object array]")

), 任何乙個值呼叫原型上的tostring()方法都會返回乙個[object nativeconstrctorname]格式的字串,由於原生陣列的建構函式名和作用域無關,因此使用tostring()方法就能保證輸出一樣的值。array的tostring()方法被重寫了(很多原生物件均如此),所以它會呼叫自己建構函式上的tostring()方法,返回其他的字串。

所有的物件都具有 tolocalestring() 、 tostring() 和 valueof() 方法,呼叫陣列的tostring 放啊,會返回由陣列每個值的字串形式,中間用 , 隔開的字串,而valueof 返回的還是陣列

var names = ['xiao', 'ming', 'hong']

alert(names.tostring())

//'xiao', 'ming', 'hong'

alert(names.valueof()) //

'xiao', 'ming', 'hong'

alert(names)//

'xiao', 'ming', 'hong'

這裡我們顯式的呼叫了 tostring() 方法,返回的是拼接的字串,呼叫 valueof() 方法,是直接將陣列傳給了alert(). 由於alert會在後台呼叫tostring()方法,所以會得到相同的結果。

在控制台則可以明顯看出效果

tolocalestring() 方法也經常返回與tostring() valueof()方法 返回相同的值,但不總是如此,當呼叫tolocalestring() 方法的時候,它會建立乙個陣列值的 以,分割的字串。與之不同的是 它是取得每一項的值,呼叫的每一項的 tolocalestring() 方法。

var person1 =,

tostring:

function

() }

var person2 =,

tostring:

function

() }

var people =[

person1,

person2

]alert(people)

//hei, liu

alert(people.tostring()) //

hei, liu

alert(people.tolocalestring()) //

ming, li

陣列繼承的 tolocalestring() 和 tostrig()、 valueof() 方法,在預設情況下都會以,進行分隔。如果想使用其他分隔符號,可以使用陣列的join() 方法,該方法接收乙個引數,然後然會所有陣列項的字串。不傳值,或者傳入undefined預設使用 ,進行分割。

ecmascript 陣列也提供了一種陣列類似於其他資料結構的方法, 可以讓陣列表現的像棧一樣。棧是(lifo)後進先出的結構,最早項被移除。而棧中項的插入和移除叫做(推入、彈出)。ecmascript為陣列提供了兩個方法。push() 和 pop()。

push(): 可以接收任意數量的引數,把他們逐個新增到陣列的末尾,並返回修改陣列後的長度。

pop(): 從陣列末尾移除最後一項,減少陣列的length,然後返回移除的項。

佇列的資料結構訪問規則是(fifo),先進先出。 佇列在列表的末端新增資料,從列表的前端進行移除。push方法是向末尾新增元素,所以模擬佇列需要從陣列前端去除資料。可以使用 shift() 方法

shift(): 能移除陣列的第一項,返回被移除值。

unshift(): 和 shift方法相反,能在陣列的前端新增任意個數的資料,並返回新的陣列長度。

陣列提供了兩個用來重排序的方法: reverse() 和 sort()

reverse(): 反轉陣列項的順序。 如: var values = [1,2,3] ;  console.log(value.reverse())// [3,2,1]

sort(): sort() 方法預設公升序排列陣列項,但是sort()方法會呼叫陣列每一項的tostring() 方法,然後比較得到字串,即使陣列的每一項都是數值,,也是比較的字串。如 var values = [0, 1, 5, 10, 15]; console.log(values.sort()); // [0,1,10,15,5]。為了解決這種問題, sort() 方法可以接收乙個比較函式,比較函式接收兩個引數, 入股喲第乙個引數應該位於第二個引數之前,返回乙個負數,反之則返回乙個正數,相等則返回0。

如:

function

compare(val1, val2)

else

if (val1 >val2)

else

}var values = [0, 1, 5, 10, 15];

console.log(values.sort(compare)) // [0,1,5,10,15]

// 也可以簡寫成

console.log(values.sort((val1, val2) => return val2 - val1))
ecmascript 提供了很多陣列的操作方法:

concat(): 基於當前陣列建立乙個副本,然後將接收到的引數新增到這個副本的末尾,並返回這個新的陣列。在沒有給cancat傳參的時候,它只是複製一下當前陣列並返回。如果向concat中傳入的是乙個或者多個陣列, 它會將陣列的每一項都新增到結果陣列,如果不是陣列,就會被簡單的新增到末尾。 如: var nums1 = [1,2,3]; var nums2 = nums1.concat([4,5,6],7,8); //nums2 = [1,2,3,4,5,6,7,8]

slice(): 它能夠基於當前陣列中的乙個或者多個項建立乙個新的陣列。 slice()方法接收乙個或者兩個引數, 即返回位置和結束位置。在只有乙個引數的情況下是從該位置到當前陣列的結束位置,如果是兩個引數,則返回從開始位置,到結束位置(不包含結束位置)的項, slice方法不會影響原始陣列。

slpice(): 最強大的陣列方法,有多種用法:

刪除:可以刪除任意數量的項,需要指定兩個引數: 要刪除第一項的位置 和 要刪除的項數,例如: slice(0, 2) 會刪除陣列的前兩項

插入:可以向指定位置插入任意數量的項,需要三個引數, 起始位置,0(刪除的項數),要插入的任意數量的項

替換:可以替換指定位置項數,並插入任意的項。 和插入傳參類似, 起始位置,1(刪除的項數),要插入的任意數量的項, 插入的項不必和刪除的項相等。

splice() 方法始終會返回乙個陣列,該陣列中包含從原始陣列中刪除的項,如果沒有刪除任何項,則返回乙個空陣列。

Array陣列型別常用的方法 整理

1.slice start,end 陣列複製 2.push 對應 pop 尾部推入 尾部彈出會改變原陣列 返回值返回把指定的值新增到陣列後的新長度 返回彈出的元素 舉例 console.log 1 push z 2 console.log 1,2,3 pop 33.unshift 對應 shift ...

Array常用的方法

語法 arrayobject.pop 功能 用於刪除並返回陣列的最後乙個元素 返回值 被刪除的元素 如果是空陣列則不改變陣列,返回undefined arrayobject.pop var arr 1 2,3 console.log arr arr 1,2,3 console.log the pop...

Array常用方法

陣列常用方法 演示 push shift unshift reverse sort splice indexof 1 棧操作 先進後出 push pop 取出陣列中的最後一項,修改length屬性 2 佇列操作 先進先出 push shift 取出陣列中的第乙個元素,修改length屬性 unshi...