亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript原生數組Array常用方法

2019-11-19 16:54:25
字體:
來源:轉載
供稿:網友

棧方法

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

push方法

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

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"]

合并兩個數組

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

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方法是將數組的最后一項移除, 將數組長度減1, 并返回移除的項.

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

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

隊列方法

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

shift方法

shift方法將移除數組的第一項, 將數組長度減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也可以在接收一個或多個參數, 把它們依次添加到數組的前端, 并返回修改后數組的長度.

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方法是用來反轉數組的.

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

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

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方法可以接收一個比較函數作為參數, 由我們來決定排序的規則. 比較函數接收兩個參數, 如果第一個參數小于第二個參數(即第一個參數應在第二個參數之前)則返回一個負數, 如果兩個參數相等則返回0, 如果第一個參數大于第二個參數則返回一個正數, 例如:

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方法可以將多個數組合并成一個新的數組. concat可以接收的參數可以是數組, 也可以是非數組值.

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方法并不操作原數組, 而是新創建一個數組, 然后將調用它的對象中的每一項以及參數中的每一項或非數組參數依次放入新數組中, 并且返回這個新數組.

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

slice方法

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

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

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

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

splice方法

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

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

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方法可以向數組的指定位置插入任務數量的元素, 此時需要提供三個參數: 起始位置(要插入的位置), 0(表示要刪除的項數, 0為不刪除), 要插入的元素, 如果要插入多個元素可以添加更多的參數, 例如:

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接收三個參數, 且第二個參數不為0時, 可達到在數組中替換元素的效果. 例如:

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數組的位置為2的元素起, 刪除2個元素, 并在位置2添加三個元素.
如果移除的元素個數不等于添加的元素個數, 那么數組的長度將發生變化.

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色一区二区在线| 国产一区二区三区在线观看视频| 中文字幕日韩在线视频| 欧美成人一区二区三区电影| 5278欧美一区二区三区| 国产精品高精视频免费| 性欧美xxxx视频在线观看| 欧美在线激情视频| 欧美一级电影免费在线观看| 91网站免费看| 国产成人一区二区在线| 亚洲最大福利视频网| 日韩精品免费在线视频观看| 久久精品99久久久久久久久| 欧美一级免费视频| 91国自产精品中文字幕亚洲| 日韩欧美在线免费| 国产精品va在线| 日韩视频永久免费观看| 7m第一福利500精品视频| 久久久最新网址| 中文字幕日本欧美| 久久精品国产电影| 91精品视频在线看| 欧美黑人性生活视频| 欧美日韩国产va另类| 欧美大尺度电影在线观看| 欧美日韩中文在线观看| 亚洲天堂影视av| 精品高清美女精品国产区| 欧美日韩精品二区| 亚洲精品免费网站| 亚洲v日韩v综合v精品v| 国产精品日本精品| 亚洲精品久久久久国产| 欧美中文字幕第一页| 精品伊人久久97| 欧美大尺度激情区在线播放| 欧美交受高潮1| 韩国精品久久久999| 欧美亚洲国产日韩2020| 国产成人精品国内自产拍免费看| 日韩av电影手机在线观看| 日韩欧美中文字幕在线播放| 91久久国产精品91久久性色| 欧美精品18videos性欧| 国产亚洲精品久久久久久| 992tv成人免费影院| 国产一区在线播放| 欧美伦理91i| 中文字幕亚洲欧美日韩在线不卡| 91久久精品日日躁夜夜躁国产| 精品国产户外野外| 成人a免费视频| 最近2019中文免费高清视频观看www99| 亚洲成人av片在线观看| 奇门遁甲1982国语版免费观看高清| 国产亚洲欧美日韩美女| 98午夜经典影视| 热久久免费视频精品| 日韩国产一区三区| 国产成人亚洲综合青青| 久久国产精品首页| 久久久久国产精品免费| 日韩精品免费在线视频| 欧美激情精品久久久久久大尺度| 国产69精品久久久久99| 欧美夫妻性生活视频| 中文字幕在线看视频国产欧美| 97视频在线观看视频免费视频| 亚洲天堂av电影| 国产精品久久久久久久美男| 少妇精69xxtheporn| 久久久久999| 清纯唯美亚洲激情| 国产精品爽爽ⅴa在线观看| 成人午夜在线观看| 中文字幕一区二区精品| 亚洲欧美中文日韩在线| 亚洲毛片在线免费观看| 2020久久国产精品| 日韩亚洲在线观看| 综合欧美国产视频二区| 欧美成人激情视频| 91精品国产自产在线| 亚洲在线免费观看| 国产精品va在线播放| 亚洲成人精品久久| 一区二区三区黄色| 亚洲精品欧美日韩| 97超级碰碰碰久久久| 国产精品爽爽爽| 国产视频精品自拍| 久久6免费高清热精品| 亚洲精品av在线播放| 亚洲第一视频在线观看| 国产欧美精品在线播放| 亚洲欧美在线一区| 亚洲欧美另类在线观看| 成人av在线网址| 日韩经典一区二区三区| 欧美国产日韩一区二区在线观看| 国产精品高潮在线| 色妞久久福利网| 日韩久久免费视频| 亚洲最新在线视频| 国产精品777| 狠狠色香婷婷久久亚洲精品| 国产成人精品999| 亚洲在线一区二区| 国产视频精品免费播放| 日韩在线视频导航| 91精品国产精品| 在线播放国产一区二区三区| 九九热最新视频//这里只有精品| 国产精品久久久久久久久借妻| 91啪国产在线| 国产精品视频一区国模私拍| 在线观看成人黄色| 这里精品视频免费| 色婷婷亚洲mv天堂mv在影片| 亚洲欧美日韩精品| 91国内在线视频| 91深夜福利视频| 午夜精品一区二区三区在线播放| 久久97精品久久久久久久不卡| 精品伊人久久97| 美女少妇精品视频| …久久精品99久久香蕉国产| 国产成人精品久久久| 日韩国产中文字幕| 国产精品国模在线| 亚洲国产高清高潮精品美女| 欧美高清第一页| 日本中文字幕久久看| 岛国av一区二区在线在线观看| 成人中文字幕在线观看| 成人免费视频a| 成人有码在线视频| 91精品视频大全| 岛国av在线不卡| 欧美性xxxxx极品| 欧美激情视频在线观看| 欧美高清第一页| 欧美激情亚洲另类| 日韩亚洲国产中文字幕| 国产日韩亚洲欧美| 国产va免费精品高清在线| 在线观看日韩视频| 久久精品一本久久99精品| 91性高湖久久久久久久久_久久99| 亚洲国产精彩中文乱码av| 国产欧美精品一区二区三区-老狼| 国产脚交av在线一区二区| 国产精品av在线| 亚洲全黄一级网站| 久久久久久一区二区三区| 亚洲大胆美女视频| 亚洲欧美国产另类| 欧美日韩中文字幕在线| 欧美丝袜美女中出在线| 精品美女久久久久久免费| 国产精品日日摸夜夜添夜夜av| 国内偷自视频区视频综合|