摘要:數(shù)組有以下特點(diǎn)無(wú)類(lèi)型數(shù)組元素可以是任意元素。因此,當(dāng)小于數(shù)組最大索引時(shí),大于的數(shù)組元素會(huì)被刪除。原數(shù)組不會(huì)改變將數(shù)組元素轉(zhuǎn)換為字符串并連接在一起。默認(rèn)將數(shù)組元素用,連接,傳入的參數(shù)即為連接符。
1. 數(shù)組
數(shù)組是值的有序集合,每個(gè)值被稱(chēng)為元素。
數(shù)組有以下特點(diǎn):
無(wú)類(lèi)型:數(shù)組元素可以是任意元素。
動(dòng)態(tài)性:數(shù)組的長(zhǎng)度是動(dòng)態(tài)的,可隨時(shí)增加和縮減。無(wú)需在創(chuàng)建時(shí)為其聲明固定大小也無(wú)需在長(zhǎng)度變化時(shí)重新分配空間。
數(shù)組是特殊的對(duì)象,并且經(jīng)過(guò)優(yōu)化,用索引訪(fǎng)問(wèn)數(shù)組比訪(fǎng)問(wèn)常規(guī)的對(duì)象屬性快。
數(shù)組繼承自Array.prototype的屬性和方法
2. 數(shù)組的操作 2.1 創(chuàng)建數(shù)組有兩種方式創(chuàng)建數(shù)組。 1. 通過(guò)數(shù)組直接量:`[]`.[,,]這樣是2個(gè)元素,并且數(shù)組元素的值為undefined. 2. 使用構(gòu)造函數(shù)`new Array()`.不傳入?yún)?shù)時(shí)創(chuàng)建空數(shù)組,一個(gè)數(shù)字參數(shù)為數(shù)組的長(zhǎng)度,2個(gè)以上參數(shù)則每個(gè)參數(shù)為創(chuàng)建的數(shù)組的元素。2.2 讀寫(xiě)數(shù)組
使用方括號(hào)的語(yǔ)法可以讀或者寫(xiě)數(shù)組元素。方括號(hào)內(nèi)的內(nèi)容是返回非負(fù)整數(shù)值的任意表達(dá)式。如果內(nèi)容是負(fù)數(shù)或非整數(shù),則會(huì)將其轉(zhuǎn)換為字符串,就作為常規(guī)的對(duì)象屬性來(lái)訪(fǎng)問(wèn)。如果使用了非負(fù)整數(shù)的字符串,就作為數(shù)組的索引訪(fǎng)問(wèn)。2.3 數(shù)組長(zhǎng)度
每個(gè)數(shù)組都有一個(gè)`length`屬性,代表數(shù)組中元素的個(gè)數(shù)。**length屬性一定大于數(shù)組索引的最大值**。因此,當(dāng)length小于數(shù)組最大索引時(shí),大于length的數(shù)組元素會(huì)被刪除。2.4 添加和刪除數(shù)組元素
添加元素:(1)給數(shù)組的新索引賦值;(2)使用數(shù)組方法:push(),unshift(),splice() 刪除元素:(1)使用delete運(yùn)算符,數(shù)組長(zhǎng)度并不會(huì)改變,訪(fǎng)問(wèn)該位置時(shí)返回undefined;(2)使用數(shù)組方法:pop(),shift(),splice()2.5 數(shù)組遍歷
(1)使用for循環(huán)遍歷數(shù)組。 (2)使用數(shù)組方法遍歷:forEach(),map() - 跳過(guò)null,undefiend,不存在的元素:if(!a[i]) continue; - 跳過(guò)值為undefiend和不存在的元素: if(a[i]===undefiend) continue; - 跳過(guò)不存在元素但仍然要處理值為undefined的元素:if(!(i in a)) continue;2.6 檢測(cè)數(shù)組
使用`Array.isArray()`傳入要檢測(cè)的數(shù)組,若為數(shù)組則返回true.3. 數(shù)組方法
將數(shù)組的方法分為:(1)原數(shù)組會(huì)改變;(2)原數(shù)組不會(huì)改變。從方法的作用和返回值來(lái)講述。3.1 原數(shù)組會(huì)改變
- `reverse()`:將元素倒序排列。返回逆序后的原數(shù)組。 - `sort([func])`:對(duì)元素進(jìn)行排序。當(dāng)不傳遞參數(shù)時(shí),將元素轉(zhuǎn)為字符串并按**字母表**順序排序。傳遞參數(shù)比較函數(shù)時(shí),若第一個(gè)函數(shù)參數(shù)在前則返回小于0,等于返回0,在后則返回大于0。返回排序后的原數(shù)組。 - `splice()`:添加或者刪除元素。第一個(gè)參數(shù)為操作開(kāi)始的索引,第二個(gè)參數(shù)為要?jiǎng)h除的元素的個(gè)數(shù),第三個(gè)參數(shù)為要加入數(shù)組的元素。若不傳入第三個(gè)參數(shù)則為刪除數(shù)組,若第二個(gè)參數(shù)為0則為添加元素。會(huì)直接在原數(shù)組上進(jìn)行修改。返回由刪除元素組成的**數(shù)組**,若未刪除則返回空數(shù)組。 - `push()`:在數(shù)組的末尾添加一個(gè)新元素,相當(dāng)于給a[a.length]賦值。返回?cái)?shù)組的新長(zhǎng)度。 - `pop()`:從數(shù)組的末尾刪除一個(gè)元素。返回被刪除的元素。 - `unshift()`:從數(shù)組的開(kāi)頭添加一個(gè)新元素。返回?cái)?shù)組的新長(zhǎng)度。 - `shift()`:從數(shù)組的開(kāi)頭刪除一個(gè)新元素。返回被刪除的元素。3.2 原數(shù)組不會(huì)改變
- `join()`:將數(shù)組元素轉(zhuǎn)換為字符串并連接在一起。默認(rèn)將數(shù)組元素用“,”連接,傳入的參數(shù)即為連接符。返回連接的字符串。 - `concat()` :不傳入?yún)?shù)的時(shí)候就是復(fù)制調(diào)用的數(shù)組,傳入?yún)?shù)則將傳入的加入到復(fù)制的數(shù)組的后面。返回新數(shù)組。 - `slice()`:獲取相應(yīng)位置之間的子數(shù)組。第一個(gè)參數(shù)是開(kāi)始的位置,第二個(gè)參數(shù)是結(jié)束的位置但不會(huì)獲取該位置的元素,若無(wú)第二個(gè)參數(shù)則為數(shù)組末尾。返回獲取的子數(shù)組。 - `reduce(),reduceRight()`:該方法的callback函數(shù)的參數(shù)為previousValue,currentvalue,index,array。第二個(gè)參數(shù)為初始值。callback作為累加器(accumulator),數(shù)組中的每個(gè)值(從左到右)開(kāi)始合并,最終為一個(gè)值?;卣{(diào)函數(shù)第一次執(zhí)行時(shí),previousValue 和 currentValue 可以是一個(gè)值,如果 initialValue 在調(diào)用 reduce 時(shí)被提供,那么第一個(gè) previousValue 等于 initialValue ,并且currentValue 等于數(shù)組中的第一個(gè)值;如果initialValue 未被提供,那么previousValue 等于數(shù)組中的第一個(gè)值,currentValue等于數(shù)組中的第二個(gè)值。可用于數(shù)組扁平化和對(duì)數(shù)組求和等。reduceRight()則從從右向左合并。返回最后一次執(zhí)行callback之后的值。 - `indexOf(),lastIndexOf()`:返回給定元素能找在數(shù)組中找到的第一個(gè)索引值,否則返回-1。第一個(gè)參數(shù)為要查找的元素,第二個(gè)參數(shù)為查找開(kāi)始的位置。lastIndexOf從后向前找。 以下四種方法第一個(gè)參數(shù)為函數(shù)(callback),對(duì)數(shù)組的每一個(gè)元素調(diào)用一次該函數(shù),會(huì)跳過(guò)delete刪除的元素和從未被賦值的元素。該函數(shù)一般有三個(gè)參數(shù):當(dāng)前元素,元素索引以及數(shù)組。第二個(gè)參數(shù)可選,為第一個(gè)參數(shù)的this的值的對(duì)象,可以理解為callback.call(thisArg, element, index, array). 方法中遍歷的范圍在第一次調(diào)用 callback 前就會(huì)確定。調(diào)用后添加到數(shù)組中的項(xiàng)不會(huì)被 callback 訪(fǎng)問(wèn)到。如果已經(jīng)存在的值被改變,則傳遞給 callback 的值是方法遍歷到他們那一刻的值。已刪除的項(xiàng)不會(huì)被遍歷到。 - `forEach()`:從頭至尾遍歷數(shù)組,對(duì)每個(gè)元素調(diào)用指定的函數(shù)。沒(méi)有辦法中止或者跳出 forEach 循環(huán),除了拋出一個(gè)異常。返回undefiend. - `map()`:返回由原數(shù)組中的每個(gè)元素調(diào)用指定方法后的返回值組成的新數(shù)組。 - `filter()`:使用指定的函數(shù)測(cè)試所有元素。返回包含所有通過(guò)測(cè)試的元素的新數(shù)組。 - `every(),some()`:測(cè)試數(shù)組的所有元素是否都通過(guò)了指定函數(shù)的測(cè)試。如果全部元素都返回true則every()會(huì)返回true。如果有一個(gè)元素返回true,則some()返回true.這兩種方法都執(zhí)行**“短路操作”**,即對(duì)于every()來(lái)說(shuō),只要檢測(cè)到某一個(gè)元素返回false,則直接返回false,不會(huì)再遍歷以后的元素。對(duì)于some()來(lái)說(shuō),如果有一個(gè)返回true,則直接返回true4. 數(shù)組的類(lèi)別
- 稀疏數(shù)組:數(shù)組中至少有一個(gè)元素未被賦值。當(dāng)用in操作符(index in array)檢查索引是否存在于數(shù)組時(shí),返回false.若元素被賦值為undefined時(shí),in操作符也會(huì)返回true. - 多維數(shù)組:使用兩次[]操作符訪(fǎng)問(wèn)數(shù)組中的數(shù)組。 - 類(lèi)數(shù)組:具有(1)數(shù)值length屬性;(2)非負(fù)整數(shù)屬性的對(duì)象可以看做是類(lèi)數(shù)組。由于這些類(lèi)數(shù)組并不是繼承自Array.prototype,所以不能使用數(shù)組方法,但是可以通過(guò)Function.call()方法調(diào)用。字符串可以看做是一種類(lèi)數(shù)組。但是由于字符串是不可變的,只讀,因此會(huì)對(duì)原數(shù)組做出改變的方法不能在字符串上調(diào)用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79836.html
摘要:若有函數(shù)名,則在函數(shù)體內(nèi)指代該函數(shù)本身,并且只存在于函數(shù)體中。返回值與普通函數(shù)相同。如果嵌套函數(shù)作為普通函數(shù)調(diào)用,則指向全局對(duì)象或者構(gòu)造函數(shù)調(diào)用在函數(shù)或者方法調(diào)用之前使用關(guān)鍵字,則為構(gòu)造函數(shù)調(diào)用。創(chuàng)建一個(gè)新的對(duì)象繼承構(gòu)造函數(shù)的屬性。 showImg(https://box.worktile.com/view/ddbade8c84bb41cdb20db15228584b8e?pid=4b...
摘要:對(duì)象是屬性的無(wú)序集合。使用對(duì)象直接量創(chuàng)建的對(duì)象的原型就是,使用運(yùn)算符創(chuàng)建的對(duì)象的原型是構(gòu)造函數(shù)的的值。主要目的是將對(duì)象鎖定,避免外界干擾。判斷對(duì)象是否封閉。刪除屬性可刪除對(duì)象的自有屬性且為的屬性。 對(duì)象是屬性的無(wú)序集合。因此,這一章主要從對(duì)象和屬性?xún)蓚€(gè)方面來(lái)闡述。showImg(https://box.worktile.com/view/c8f5f376fe314aeca69d9b4c...
摘要:如果在初學(xué)一門(mén)語(yǔ)言的時(shí)候第一想到的是問(wèn)別人,是很難取得進(jìn)步的。如果你真想學(xué)好,我有個(gè)大概的自學(xué)軌跡供你們參考。第一步,學(xué)習(xí)的編程。立即可以嘗試的實(shí)例,也可以讓的初學(xué)者馬上看到效果。讀懂別人的代碼是學(xué)習(xí),而改進(jìn)別人的代碼則是創(chuàng)造了。 javascript入門(mén)太容易了,導(dǎo)致幾乎人人隨便看看就能上手,零基礎(chǔ)的人學(xué)個(gè)三五天都能對(duì)外宣稱(chēng)自己掌握了js??墒钦嬲莆誮s是一件很難的事情。如果在初學(xué)...
摘要:設(shè)計(jì)目的是為了讓在全局范圍內(nèi)有效。在正則表達(dá)式后部引用前面的子表達(dá)式。傳入分隔符或正則表達(dá)式。對(duì)象屬性以下屬性返回布爾值。是否包含修飾符以下不返回布爾值整個(gè)字符串下一次搜索開(kāi)始的位置。返回布爾值,若匹配則返回。 1. 正則表達(dá)式語(yǔ)法 1.1 表示方法 - `//`字面量模式,`/表達(dá)式/修飾符` - 使用`new RegExp(字符串,修飾符 | 正則表達(dá)式)`構(gòu)造函數(shù)。 在ES5中,...
摘要:緣起這是語(yǔ)言程序設(shè)計(jì)的,計(jì)劃之前全部整理完。產(chǎn)生隨機(jī)數(shù)的方法。復(fù)習(xí)題雙分支語(yǔ)句復(fù)習(xí)題嵌套的語(yǔ)句和多分支語(yǔ)句復(fù)習(xí)題常見(jiàn)錯(cuò)誤和陷阱常見(jiàn)錯(cuò)誤兩個(gè)浮點(diǎn)數(shù)值的相等測(cè)試復(fù)習(xí)題產(chǎn)生隨機(jī)數(shù)產(chǎn)生一個(gè)到之間的隨機(jī)值,不包括。 緣起 這是《Java語(yǔ)言程序設(shè)計(jì)(10th)》的Part1,計(jì)劃2017-12-31之前全部整理完。 2017-12-23開(kāi)始想看這本書(shū)的,并同時(shí)開(kāi)始實(shí)踐起Java來(lái)的。 Part...
閱讀 3235·2023-04-26 02:27
閱讀 2148·2021-11-22 14:44
閱讀 4111·2021-10-22 09:54
閱讀 3206·2021-10-14 09:43
閱讀 761·2021-09-23 11:53
閱讀 12770·2021-09-22 15:33
閱讀 2717·2019-08-30 15:54
閱讀 2695·2019-08-30 14:04