日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

深入浅出 JavaScript 数组 v0.5

發(fā)布時(shí)間:2025/7/14 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出 JavaScript 数组 v0.5 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有一段時(shí)間不更新博客了,今天分享給大家的是一篇關(guān)于JS數(shù)組的,數(shù)組其實(shí)比較簡(jiǎn)單,但是用法非常靈活,在工作學(xué)習(xí)中應(yīng)該多學(xué),多用,這樣才能領(lǐng)會(huì)數(shù)組的真諦。

以下知識(shí)主要參考《JS 精粹》和《JavaScript 高級(jí)程序設(shè)計(jì)》。



?數(shù)組是一段線性分配的內(nèi)存,它通過(guò)整數(shù)計(jì)算偏移并訪問(wèn)其中的元素。JavaScript 沒(méi)有像此類數(shù)組一樣的數(shù)據(jù)結(jié)構(gòu)。

它提供了一些類數(shù)組特性的對(duì)象,它把數(shù)組的下標(biāo)轉(zhuǎn)變?yōu)樽址?/strong>,用其作為屬性。

ECMAScript和其他語(yǔ)言中的數(shù)組的區(qū)別:?

  • ECMAScript 數(shù)組中的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。
  • ECMAScript 數(shù)組的大小是可以動(dòng)態(tài)調(diào)整的。

創(chuàng)建數(shù)組的方式:

var arr = new Array(); var arr1 =[]; // 創(chuàng)建兩個(gè)空數(shù)組

一個(gè)有趣的屬性 length

每個(gè)數(shù)組都有一個(gè) length 屬性。JavaScript 數(shù)組的 length 是沒(méi)有上界的。

length 屬性的值是這個(gè)數(shù)組最大整數(shù)屬性名加上1.它不一定等于數(shù)組里的屬性的個(gè)數(shù)

var arr = []; arr.length; // 0 arr[100] = true; arr.length; // 101 // arr只包含一個(gè)屬性

length值不是只讀的,可以設(shè)定length的值。

設(shè)置更大的length不會(huì)給數(shù)組分配更多的空間。

而把length 設(shè)小將導(dǎo)致所有下標(biāo)大于等于新length 的屬性被刪除。

刪除一個(gè)元素

?JavaScript 數(shù)組就是對(duì)象,可以使用 delete 運(yùn)算符刪除數(shù)組中的元素。

delete numbers[2]; // numbers 是 ['zero','one',undefined,'three']

?

被刪除的元素變成undefined。并不會(huì)將后面的元素依次前移。

數(shù)組的檢測(cè)

對(duì)于一個(gè)網(wǎng)頁(yè)或一個(gè)全局作用域而言,使用 instanceof 操作符就能得到滿意的結(jié)果。

if (value instanceof Array) {// do sth with array }

?

如果實(shí)際中有兩個(gè)全局環(huán)境的話,就存在兩個(gè)不同版本的Array 構(gòu)造函數(shù),如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,

那么傳入的數(shù)組與第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。

為了解決這個(gè)問(wèn)題,ECMAScript 5 新增了Array.isArray() 方法。

if (Array.isArray(value)) {// do sth with array }

轉(zhuǎn)換方法(以下方法不做舉例,請(qǐng)參考API)

所有對(duì)象都具有 toString()、valueOf()方法。

toString() 方法返回的是由數(shù)組每個(gè)值的字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串。

valueOf() 返回的還是數(shù)組。

Array.join() 方法返回以參數(shù)為分隔的字符串。

棧方法

數(shù)組可以表現(xiàn)的像棧一樣,棧是一種LIFO的數(shù)據(jù)結(jié)構(gòu),JS數(shù)組提供的方法是 push() 和pop()?

push() 方法可以接收任意數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組的末尾,并返回修改后數(shù)組的長(zhǎng)度。

pop() 方法則從數(shù)組的末尾移除最后一項(xiàng),減少數(shù)組的 length 值,然后返回移除的項(xiàng)。

隊(duì)列方法

隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是FIFO,隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng)。

push() 方法想數(shù)組末端添加項(xiàng)。

shift() 從數(shù)組前端取得項(xiàng),同時(shí)length 減1.

unshift() 從數(shù)組的前端添加任意項(xiàng),并返回新數(shù)組的長(zhǎng)度,因此可以使用unshift() 方法和pop() 方法從相反的方向?qū)崿F(xiàn)隊(duì)列。

重排序方法

reverse() 反轉(zhuǎn)數(shù)組項(xiàng)的順序。 這個(gè)方法的作用直觀明了,但不夠靈活。

sort() 方法默認(rèn)按升序排列數(shù)組項(xiàng),它會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到的字符串,以確定如何排序。

即使數(shù)組中的每一項(xiàng)都是數(shù)組,sort() 方法比較的也是字符串。?

該方法可以接受一個(gè)比較函數(shù)作為參數(shù),sort 可以按照比較函數(shù)給定的規(guī)則對(duì)數(shù)組進(jìn)行排序。

這兩個(gè)方法的返回值都是經(jīng)過(guò)排序后的數(shù)組。

操作方法

concat() 方法可以基于當(dāng)前對(duì)象的所有項(xiàng)創(chuàng)建一個(gè)新的數(shù)組,接收的參數(shù)添加到新數(shù)組的末尾。

參數(shù)如果是數(shù)據(jù)項(xiàng),則直接添加到末尾,如果是數(shù)組,則將數(shù)組的每一項(xiàng)添加到末尾。

slice() 該方法基于當(dāng)前數(shù)組中的一個(gè)或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組。該方法可以接收一個(gè)或兩個(gè)參數(shù),即要返回項(xiàng)的起始和結(jié)束位置。

在只有一個(gè)參數(shù)的情況下,slice() 方法返回參數(shù)指定位置到當(dāng)前數(shù)組末尾的所有項(xiàng)。

如果有兩個(gè)參數(shù),則返回起始和結(jié)束位置之間的項(xiàng),但不包括結(jié)束位置的項(xiàng)。

如果參數(shù)中有一個(gè)負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來(lái)確定響應(yīng)的位置。

splice() 這個(gè)方法是最強(qiáng)大的數(shù)組方法。它的最主要用途是向數(shù)組的中部插入項(xiàng)。

  • 刪除: 可以刪除任意數(shù)量的項(xiàng),只需指定2個(gè)參數(shù);要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)。
  • 插入: 可以向指定位置插入任意數(shù)量的項(xiàng),只需提供三個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))和要插入的項(xiàng)。如果要插入多個(gè)項(xiàng),可以傳入第四,第五。。個(gè)參數(shù)。
  • 替換: 可以向指定位置插入任意數(shù)量的項(xiàng),三個(gè)參數(shù),起始位置、要?jiǎng)h除的項(xiàng)數(shù)和要插入的任意數(shù)量的項(xiàng)。插入的項(xiàng)不必和刪除的項(xiàng)數(shù)相等。

位置方法

indexOf() 和 lastIndexOf() 兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選)表示查找起點(diǎn)位置的索引。

兩個(gè)方法都返回要查找的項(xiàng)的位置,沒(méi)有為-1.在查找的過(guò)程中,使用的是全等操作符(===)。

其中indexOf() 方法從數(shù)組的開(kāi)頭向后查找,lastIndexOf() 方法則從數(shù)組的末尾向前查找。

迭代方法

every() 對(duì)數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回true

filter() 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組

foreach() 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),這個(gè)函數(shù)沒(méi)有返回值

map() 對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回每次調(diào)用函數(shù)返回的結(jié)果組成的數(shù)組

some() 對(duì)數(shù)組匯總的每一項(xiàng)運(yùn)行給定的函數(shù),如果函數(shù)對(duì)任一項(xiàng)返回true,則返回true

歸并方法

reduce() 和reduceRight() 都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值,

其中reduce() 方法從數(shù)組的第一項(xiàng)開(kāi)始逐個(gè)遍歷到最后。

而 reduceRight() 則從數(shù)組的最后一項(xiàng)開(kāi)始,向前遍歷到第一項(xiàng)。

這兩個(gè)方法接收兩個(gè)參數(shù),一個(gè)在每一項(xiàng)上調(diào)用的函數(shù)和(可選的)最為歸并基礎(chǔ)的初始值。

傳給reduce* () 的函數(shù)接收四個(gè)參數(shù):前一個(gè)值,當(dāng)前值,項(xiàng)的索引,和數(shù)組對(duì)象。

這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上,

因此第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)。

轉(zhuǎn)載于:https://www.cnblogs.com/googny/p/3747832.html

總結(jié)

以上是生活随笔為你收集整理的深入浅出 JavaScript 数组 v0.5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。