国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript原生數(shù)組Array常用方法

2019-11-19 16:54:25
字體:
供稿:網(wǎng)友

棧方法

push方法和pop方法, 可以使數(shù)組的行為類似于棧, 先進后出, 并且推入和彈出操作只發(fā)生在一端.

push方法

push方法可以接收一個或多個參數(shù), 把它們追加到數(shù)組末尾, 并返回修改后數(shù)組的長度.

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.push('f');console.info('temp: ' + temp); // temp: 6console.info(arr); // ["a", "b", "c", "d", "e", "f"]temp = arr.push('g', 'h');console.info('temp: ' + temp); // temp: 8console.info(arr); // ["a", "b", "c", "d", "e", "f", "g", "h"]

合并兩個數(shù)組

我們可以通過Array.prototype.push.apply()來合并兩個數(shù)組, 示例如下:

var arr1 = ['a', 'b', 'c'],  arr2 = ['x', 'y', 'z'];var temp = Array.prototype.push.apply(arr1, arr2);console.info(arr1); // ["a", "b", "c", "x", "y", "z"]console.info(arr2); // ["x", "y", "z"]console.info(temp); // 6

pop方法

pop方法是將數(shù)組的最后一項移除, 將數(shù)組長度減1, 并返回移除的項.

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.pop();console.info('temp: ' + temp); // temp: econsole.info('length: ' + arr.length); // length: 4

如果在一個空數(shù)組上使用pop方法, 則返回undefined

隊列方法

隊列的訪問規(guī)則是先進先出, 并且隊尾添加項, 隊頭移除項. push方法和shift方法結(jié)合使用, 就可以像操作隊列一樣操作數(shù)組.

shift方法

shift方法將移除數(shù)組的第一項, 將數(shù)組長度減1, 并返回移除的項.

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.shift();console.info('temp: ' + temp); // temp: aconsole.info('length: ' + arr.length); // length: 4

unshift方法

相反地, 還有一個unshift方法, 它的用途與shift方法相反
unshift也可以在接收一個或多個參數(shù), 把它們依次添加到數(shù)組的前端, 并返回修改后數(shù)組的長度.

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.unshift('x', 'y', 'z');console.info('temp: ' + temp); // temp: 8console.info(arr); // ["x", "y", "z", "a", "b", "c", "d", "e"]

重排序方法

sort方法和reverse方法

sort方法和reverse方法是可以直接用來重排序的兩個方法.
其中, reverse方法是用來反轉(zhuǎn)數(shù)組的.

var arr = [1, 3, 2, 5, 4];arr.reverse();console.info(arr); // [4, 5, 2, 3, 1]

關(guān)于sort方法, 默認情況下, 它是對數(shù)組的每一項進行升序排列, 即最小的值在前面. 但sort方法會調(diào)用toString方法將每一項轉(zhuǎn)成字符串進行比較(字符串通過Unicode位點進行排序), 那么這種比較方案在多數(shù)情況下并不是最佳方案. 例如:

var arr = [1, 3, 2, 5, 4];arr.sort();console.info(arr); // [1, 2, 3, 4, 5]arr = [1, 5, 10, 20, 25, 30];arr.sort();console.info(arr); // [1, 10, 20, 25, 30, 5]

因此, sort方法可以接收一個比較函數(shù)作為參數(shù), 由我們來決定排序的規(guī)則. 比較函數(shù)接收兩個參數(shù), 如果第一個參數(shù)小于第二個參數(shù)(即第一個參數(shù)應在第二個參數(shù)之前)則返回一個負數(shù), 如果兩個參數(shù)相等則返回0, 如果第一個參數(shù)大于第二個參數(shù)則返回一個正數(shù), 例如:

var arr = [1, 5, 10, 20, 25, 30];arr.sort(function(value1, value2){  if(value1 < value2) {    return -1;  } else if(value1 > value2) {    return 1;  } else {    return 0;  }});console.info(arr); // [1, 5, 10, 20, 25, 30]

操作方法

concat方法

concat方法可以將多個數(shù)組合并成一個新的數(shù)組. concat可以接收的參數(shù)可以是數(shù)組, 也可以是非數(shù)組值.

var arr1 = ['a', 'b', 'c'],  arr2 = ['x', 'y', 'z'],  val = 'hello';var temp = arr1.concat(val, arr2);console.info('arr1: ' + arr1); // arr1: a,b,cconsole.info('arr2: ' + arr2); // arr2: x,y,zconsole.info('val: ' + val); // val: helloconsole.info('temp: ' + temp); // temp: a,b,c,hello,x,y,z

concat方法并不操作原數(shù)組, 而是新創(chuàng)建一個數(shù)組, 然后將調(diào)用它的對象中的每一項以及參數(shù)中的每一項或非數(shù)組參數(shù)依次放入新數(shù)組中, 并且返回這個新數(shù)組.

concat方法并不操作調(diào)用它的數(shù)組本身, 也不操作各參數(shù)數(shù)組, 而是將它們的每個元素拷貝一份放到新創(chuàng)建的數(shù)組中. 而拷貝的過程, 對于對象類型來說, 是將對象引用復制一份放到新數(shù)組中, 而對于基本類型來說, 是將其值放到新數(shù)組中.

slice方法

slice方法可以基于源數(shù)組中的部分元素, 對其進行淺拷貝, 返回包括從開始到結(jié)束(不包括結(jié)束位置)位置的元素的新數(shù)組.

var arr = ['a', 'b', 'c', 'd', 'e'];var temp1 = arr.slice(),  temp2 = arr.slice(1),  temp3 = arr.slice(1, 2);console.info(arr); // ["a", "b", "c", "d", "e"]console.info(temp1); // ["a", "b", "c", "d", "e"]console.info(temp2); // ["b", "c", "d", "e"]console.info(temp3); // ["b"]

從示例中可以看出:

  1. slice方法并沒有操作原數(shù)組, 而是創(chuàng)建了一個新的數(shù)組.
  2. 當沒有傳參數(shù)給slice方法時, 則返回從索引0開始拷貝的新數(shù)組.
  3. 傳入一個參數(shù), 如: arr.slice(1), 表示從索引1位置開始拷貝, 一直到原數(shù)組的最后一個元素.
  4. 傳入兩個參數(shù), 如: arr.slice(1, 2), 表示從索引1位置開始拷貝, 一直拷貝到位置2但不包括位置2上的元素.

參數(shù)如果為負數(shù), 表示從數(shù)組最后面的元素可以算起.

slice方法同樣不操作調(diào)用它的數(shù)組本身, 而是將原數(shù)組的每個元素拷貝一份放到新創(chuàng)建的數(shù)組中. 而拷貝的過程, 也于concat方法相同.

splice方法

splice方法可以用途刪除或修改數(shù)組元素. 它有如下幾種用法:

刪除:
當給splice方法中傳入一個或兩個參數(shù)時, 就可以從數(shù)組中刪除任意元素.
傳入一個參數(shù): 要刪除的的第一個元素的位置, 此時將會刪除從要刪除的第一個元素的位置起, 后面的所有元素.
傳入兩個參數(shù): 要刪除的第一個元素的位置和要刪除的項數(shù),
返回值均為刪除的元素組成的數(shù)組, 例如:

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.splice(2);console.info(arr); // ["a", "b"]console.info(temp); // ["c", "d", "e"]arr = ['a', 'b', 'c', 'd', 'e'];temp = arr.splice(2, 2);console.info(arr); // ["a", "b", "e"]console.info(temp); // ["c", "d"]

插入:
使用splice方法可以向數(shù)組的指定位置插入任務數(shù)量的元素, 此時需要提供三個參數(shù): 起始位置(要插入的位置), 0(表示要刪除的項數(shù), 0為不刪除), 要插入的元素, 如果要插入多個元素可以添加更多的參數(shù), 例如:

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.splice(2, 0, 'x', 'y', 'z');console.info(arr); // ["a", "b", "x", "y", "z", "c", "d", "e"]console.info(temp); // [], 并沒有刪除元素

替換:
當splice接收三個參數(shù), 且第二個參數(shù)不為0時, 可達到在數(shù)組中替換元素的效果. 例如:

var arr = ['a', 'b', 'c', 'd', 'e'];var temp = arr.splice(2, 2, 'x', 'y', 'z');console.info(arr); // ["a", "b", "x", "y", "z", "e"]console.info(temp); // ["c", "d"]

此示例表示, 從arr數(shù)組的位置為2的元素起, 刪除2個元素, 并在位置2添加三個元素.
如果移除的元素個數(shù)不等于添加的元素個數(shù), 那么數(shù)組的長度將發(fā)生變化.

另外,
從ECMAScript5開始, 還提供了數(shù)組的迭代方法, 歸并方法等, 這些方法將在后面做出補充.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青神县| 曲阜市| 太仓市| 富平县| 乐陵市| 综艺| 温州市| 巴东县| 阳信县| 巴青县| 湾仔区| 雅安市| 永清县| 余江县| 金寨县| 蒙山县| 永泰县| 上林县| 富顺县| 波密县| 宜城市| 江源县| 古丈县| 沾化县| 松滋市| 江北区| 区。| 平阳县| 九江市| 辽阳市| 吴江市| 扶余县| 多伦县| 福鼎市| 剑阁县| 定州市| 英德市| 沿河| 阳山县| 望奎县| 专栏|