JavaScript 數(shù)組創(chuàng)建
一維數(shù)組
var arr = [] // 空數(shù)組
var arr = [1,2,3,4] // 數(shù)組字面量
var arr = new Array() // 空數(shù)組
arr[0] = 1
arr[1] = 2
var arr = new Array(20) //創(chuàng)建一個有20個空間大小的數(shù)組
var arr = new Array(1,2,3,4) //創(chuàng)建數(shù)組洞拨,包含四個元素
二維數(shù)組
var arr = new Array()
arr[0] = [1,2,3]
arr[1] = [3,2,1]
// 一般多維數(shù)組會用循環(huán)(比如for)來構(gòu)建
數(shù)組方法
arr = [1,2,3,4,5]
arr.join(separator)——連接
返回以separator為間隔的字符串误墓,原數(shù)組不變
arr.join("-") //返回值1-2-3-4-5
arr.push(item,[items])——末尾添加
可輸入多個元素 贸街,修改數(shù)組本身,返回 修改后數(shù)組長度
arr.push(4,3,2,1) //返回9
arr.pop()——刪除末尾元素
無參數(shù)嗅榕,返回被刪除元素,數(shù)組長度改變
arr.pop() // 返回 5
arr.shift()——刪除第一個元素
返回被刪除元素,數(shù)組長度改變
arr.shift() // 返回1
arr.unshift(item,[items])——數(shù)組首位添加元素
可添加多個元素,返回增加后的數(shù)組長度
arr.unshift(-1,0) // 返回7
arr.reverse()——反轉(zhuǎn)數(shù)組
返回被反轉(zhuǎn)順序的數(shù)組抖单,原數(shù)組改變
arr.reverse() //返回[ 5, 4, 3, 2, 1 ]
arr.concat(items,[items])——連接元素
參數(shù)任意,無參數(shù)時返回原數(shù)組副本遇八,否則將參數(shù)添加進數(shù)組副本末尾并返回該副本臭猜,原數(shù)組不變
注意:若參數(shù)有數(shù)組,一位數(shù)組將被劃分為獨立的項再進行添加押蚤,二維數(shù)組的情況只有第一層數(shù)組會被拆分,第二層數(shù)組以數(shù)組的形式被添加
arr.concat() //返回[ 5, 4, 3, 2, 1 ]
arr.contact("last",["add","and",[11,11,11]])
//返回 [ 1, 2, 3, 4, 5, 'last', 'add', 'and', [ 11, 11, 11] ]
arr.sort([compareFunction])——排序
無參數(shù)時默認升序排序羹应,添加compareFunction比較函數(shù)揽碘,函數(shù)中將兩個值進行比較,第一個值位置在前時返回負數(shù)园匹,相等返回0雳刺,靠后返回正數(shù)。
降序(示例)
function compareFunction(value1,value2){
if(value1 > value2) return -1
if(value1 < value2) return 1
if(value1 == value2) return 0
}
arr.sort(compareFunction) //返回[ 5, 4, 3, 2, 1 ]
arr.slice(startIndex,endIndex)——截取數(shù)組
截取開始下標和結(jié)束下標包含的項裸违,不包括結(jié)束下標的項掖桦,省略結(jié)束下標參數(shù)時默認截取到最后一個字符串
結(jié)束下標為負時,設結(jié)束下標為-1供汛,則截取的最后一個數(shù)的位置是倒數(shù)第2個(2 = |-1|+1)
arr.slice(1) //返回[ 2, 3, 4, 5 ]
arr.slice(1枪汪,4) //返回[ 2, 3, 4 ]
arr.slice(1,-1) //返回[ 2, 3, 4 ]
arr.splice()——切片——刪除、插入怔昨、替換
始終返回被刪除的項
刪除——arr.splice(stratIndex,length) 刪除從下標為startIndex開始的length個項
arr.splice(0,2) //刪除前兩項 返回[ 1, 2 ]
插入——arr.splice(start,0,[items])——在start處添加【items】雀久,刪除0項
arr.splice(1,0,-1,-1) //在第二位添加兩個項,-1,返回[]
替換——在被刪除的地方插入新值就可以了arr.splice(start,length,[items])
arr.splice(0,2,-1,-1) //
arr.indexOf(item,start) arr.lastIndexOf(item,start)——查找
輸入要查找的項和開始查找的起點位置索引【可選】趁舀,首次匹配成功返回匹配項索引并結(jié)束匹配赖捌,否則返回-1
arr.indexOf(5) //返回4
數(shù)組遍歷
forEach
arr.forEach(function(item,index,arrSelf){})
無返回值,原數(shù)組不變
給定匿名遍歷函數(shù)矮烹,包含三個參數(shù)——每一次遍歷的數(shù)組項越庇,該項的索引,數(shù)組本身
arr.forEach(function(item,index,arrSelf){
console.log("index:"+index+" value:"+item)
})
輸出:
index:0 value:1
index:1 value:2
index:2 value:3
index:3 value:4
index:4 value:5
map
arr.map(function(item,index){return})**——映射
遍歷數(shù)組每一項奉狈,每一次返回值組成新的數(shù)組卤唉,原數(shù)組不變
arr.map(function(item,index){
console.log("index="+index+"__"+"item="+item)
return item-1
})
輸出
index=0__item=1
index=1__item=2
index=2__item=3
index=3__item=4
index=4__item=5
[ 0, 1, 2, 3, 4 ]
filter
arr.filter(function(item,index){reutn ture/false})——過濾
返回滿足過濾條件組成的數(shù)組,原數(shù)組不變
arr.filter(function(item,index){
return item>2
})
返回[3,4,5]
every()
arr.every(function(item,index){return true/false}):判斷數(shù)組中每一項都是否滿足條件,只有所有項都滿足條件仁期,才會返回true搬味。
arr.every(function(item,index){
console.log("index="+index+"__"+"item="+item)
return item>2
})
返回
index=0__item=1
false
some
arr.some(function(item,index){return false/true})
判斷數(shù)組中是否存在滿足條件的項境氢,只要有一項滿足條件,就會返回true碰纬。
arr.some(function(item,index){
console.log("index="+index+"__"+"item="+item)
return item>1
})
返回
index=0__item=1
index=1__item=2
true
歸并
reduce()和 reduceRight()
給定一個函數(shù)和一個歸并基礎值萍聊,每一次返回的值作為下一次的prevSub
var sum = arr.reduceRight(function(prevSum, cur, index, array){
return prevSum * cur;
},10);
console.log(sum); //1200
運算過程
10 * 5 * 4 * 3 * 2* 1 = 1200