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