閱讀197 返回首頁    go 阿裏雲 go 技術社區[雲棲]


js數組知識的複習總結

首先來說一下數組的創建方法:
1.空數組:var Array = new Array()
2.指定長度數組:var Array = new Array(Size)
https://yq.aliyun.com/articles/3.指定元素數組:var Array = new Array(Element1, Element2,……,ElementN)
4.單維數組:var Array = [Element1, Element2,……,ElementN]
5.二維數組:var Array = [[ElementSequence1],[ ElementSequence 2],……,[ ElementSequenceN]]
6.多維數組與二維數組同理

再來看看數組的基本操作都有哪些:
1.存取數組元素:
(1)單維數組的存取:數組名[下標索引],
(2)二維數組的存取:二維數組[外層數組下標]內層數組下標多維數組與二維數組相仿把把數組一層層剝開來
2.數組有哪些特性:
(1)數組長度是彈性的,可自由伸縮
(2)數組下標是從0開始的
(https://yq.aliyun.com/articles/3)數組下標可以是數值也可以是非數值:數組下標為非數值時會自動轉換為字符串並將字符串作為對象屬性的名字生成相應的關聯數組(eg:Array[a],Array[b]...)
(4)數組元素可添加到對象中
https://yq.aliyun.com/articles/3.如何增加數組元素:通過使用"[]"運算符來指定一個新下標,例如給變量Array添加第五個元素可寫成Array[4]
4.如何刪除數組元素:delete 數組名[下標]
5.如何遍曆數組元素:for(var 數組元素變量 in 數組)

再來看看數組都有哪些屬性吧:
1.length屬性:返回數組的長度,即數組中元素的個數;因為數組的索引總是從0開始的,所以一個數組的上下限分別是0和length-1;但是從數組的特性第一條可以知道length屬性是可變的,因此也可以通過length屬性來增加或減少數組的容量。
2.prototype屬性:此屬性是object共有的,使我們有能力向對象添加屬性和方法,例如:object.prototype.name=value
https://yq.aliyun.com/articles/3.constructor屬性:指定建立地象原型(prototype)函數,constructor屬性是所有具有prototype對象的成員,它包括除Global和Math對象以外的所有js固有對象,constructor屬性保存了對構造特定對象實例的函數的引用。

數組的常用操作方法:
1.棧方法:
(1)pop():從數組末尾移除最後一項,減少數組的length值,然後返回移除的項
(2)push():可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後數組的長度
2.隊列方法:
(1)shift():移除數組中第一個項並返回改項,同時將數組長度減1
(2)unshift():在數組前端添加任意個項並返回新數組的長度
https://yq.aliyun.com/articles/3.重排序方法
(1)reserve():反轉數組元素順序
(2)sort():默認情況下,sort()方法會按升序從小到大排列數組項,為了實現排序sort()方法會調用每個數組項的toString()轉型方法後然後比較得到的字符串以確定如何排序,哪怕數組中的每一項都是數值sort()方法比較的也是字符串;sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位於哪個值的前麵
4.操作方法:
(1)concat():合並兩個數組並返回結果,它不會改變當前數組,而是基於當前數組中的所有項創建一個新數組
(2)slice():截取數組中的一段並返回,可以接收一或兩個參數即要返回的起始和結束位置,在隻有一個參數的情況下,slice()方法返回從該參數指定位置開始到當前數組末尾的所有項,如果有兩個參數,該方法返回起始和結束位置之間的項(包含頭不包含尾),如果是負數則用數組長度加上該值確定的位置;slice()方法也是基於當前數組中的一項或多個項創建一個新數組而不改變當前數組
(https://yq.aliyun.com/articles/3)splice():主要用途是向數組的中部插入項,但使用這種方法的方式則有如下https://yq.aliyun.com/articles/3種
a)刪除:可以刪除任意數量的項,需指定2個參數:要刪除的第一項的位置和要刪除的項數;列如:splice(0,2)會刪除數組中的前兩項;
b)插入:可以向指定位置插入任意數量的項,需提供https://yq.aliyun.com/articles/3個參數:起始位置,0(要刪除的項數)和要插入的項;如何要插入多項可以再傳入第四,第五,以至任意多個項;列如:splice(2,0,"red","green")會從當前數組的位置2開始插入字符串"red"和"green";
c)替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,隻需要提供https://yq.aliyun.com/articles/3個參數:起始位置,要刪除的項數和要插入的任意數量的項;列如:splice(2,1,"red","green")會刪除當前數組位置2的項,然後再從位置2開始插入字符串"red"和"green";splice()方法始終都會返回一個數組,該數組中包含從原始數組中刪除的項(如果沒有刪除任何項,則會返回一個空數組).
5.轉換方法:
所有對象都具有toLocaleString(),toString()和valueOf()方法;
(1)toString():返回由數組中每個值的字符串形式拚接而成的一個以逗號分隔的字符串
(2)toLocalString():用法同toString(),但是數組轉化為的是本地字符串
(https://yq.aliyun.com/articles/3)valueOf():用法同toString(),但返回的還是數組
(4)join():接收一個參數用作分隔符,數組轉化為字符串後以該參數連接
6.檢測數組:
(1)instanceof:檢測對象是否為數組,用法為:if(value instanceof Array){//對數組執行某些操作}
(2)Array.isArray():此方法作用同instanceof,但隻支持ie9+,firefox 4+,safari 5+,opera 10.5+和chrome,用法為:if(Array.isArray(value)){//對數組執行某些操作}
7.位置方法:
兩個位置方法:indexOf()和lastIndexOf(),這兩個方法都接收兩個參數:要查找的項和(可選的)表示查找起點位置的索引;這兩個方法都返回查找的項在數組中的位置或者在沒找到的情況下返回-1,在比較第一個參數與數組中每一項時會使用全等操作符,也就是說要求查找的項必須嚴格相等
(1)indexOf:從數組的開頭(位置0)開始向後查找
(2)lastIndexOf:從數組的結束位置開始向前查找
8.迭代方法:
(1)every():相當於邏輯與,如果該函數對每一項都返回true則返回true,它不會對空數組進行檢測也不會改變原始數組
(2)filter():返回給定條件的數組,返回值為true的所有數組成員
(https://yq.aliyun.com/articles/3)forEach():無返回值
(4)map():返回每次函數調用的結果數組
(5)some():相當於邏輯或,有任意一項返回true則返回true
9.歸並方法:
(1)reduce():接收一個函數作為累加器(accumulator),數組中的每個值(從左到右)開始縮減,最終為一個值;語法為:arr.reduce([callback, initialValue]),
callback:執行數組中每個值的函數,包含四個參數:
a)previousValue:上一次調用回調函數返回的值,或者是提供的初始值(initialValue)
b)currentValue:數組中當前被處理的元素
c)currentIndex:當前被處理元素在數組中的索引, 即currentValue的索引.如果有initialValue初始值, 從0開始.如果沒有從1開始.
d)array:調用 reduce 的數組
initialValue:可選參數, 作為第一次調用callback的第一個參數, previousValue 等於 initialValue
(2)reduceRight():和reduce()方法本質一樣,區別就在於是從後向前開始遍曆

最後更新:2017-04-01 17:13:52

  上一篇:go 【Java編碼規範】《阿裏巴巴Java開發手冊(正式版)》更新(v1.1.1版)
  下一篇:go 從代碼層讀懂HashMap的實現原理