標籤:返回結果 color ever str 退出 函數傳回值 dex 過濾器 shift
不知大家是否有過跟我類似的經曆,就是切圖仔剛開始做切圖頁面的時候,經常調用一些別人寫的jquery外掛程式,例如音樂播放器這種需要切換多首音樂的外掛程式。調用的時候就必須有一個音樂隊列,而這個隊列就是一個數組,而需求方希望能在頁面的html通過date屬性擷取到javascript就可以自動產生歌曲列表。當時的我並沒有系統地看過一些javascript的基礎知識,自己丈二的和尚,摸不著頭腦,就不知道怎麼辦。
後來查了一下ECMAScript給數組這個對象已經原生地封裝了許多很有用的方法,所以接下來我想在這裡總結一下一些常用的數組內建方法:
1、join
var colors = ["red","blue","green"];colors.join("$$"); colors.toString(); //"red$$blue$$green"
join()用於改變數組的分割。
2、修改數組內部資料的方法
//*//*插入方法//*//push方法var colors = ["red"];colors.push("blue","green"); //3colors.toString(); //"red,blue,green"//unshift方法var colors = ["red"];colors.unshift("blue","green"); //3colors.toString(); //"blue,green,red"//*//*刪除(退出)數組項方法//* //pop方法var colors = ["red","blue","green"];colors.pop(); //"green"//shift方法var colors = ["red","blue","green"];colors.shift(); //"red"//*//*功能最強的方法——splice(索引位置,要刪除的個數,要插入的若干項資料)//*//作為刪除用途var colors = ["red","blue","green"];colors.splice(1,1); //["blue"]colors.toString() //"red,green"//作為替換用途var colors = ["red","blue","green"];colors.splice(1,2,"white","black"); //["blue", "green"]colors.toString(); //"red,white,black"//作為插入用途var colors = ["red","blue","green"];colors.splice(1,0,"white","black"); //[]colors.toString(); //"red,white,black,blue,green"
push()方法是從數組最後插入數組項,而unshift()則是從數組的最前插入數組項,注意插入的數組項在該數組的順序保持與參數時候一致。
pop()方法是從數組最後“彈出”數組項,而unshift()則是從數組的最前“彈出”數組項。
而splice方法可以實現插入、刪除、替換這3種功能:splice(索引位置,要刪除的個數,要插入的若干項資料)
3、迭代方法
var numbers = [1,2,3,4,5,4,3,2,1];//*//*判斷數組每一項//*//every只有每一項都返回true,整個才會返回truenumbers.every(function(item,index,array){return item>2}) //false//some只要有一項返回true,整個就會返回truenumbers.some(function(item,index,array){return item>2}) //true//*//*filter過濾器,返回一個由符合的項組成的數組//*numbers.filter(function(item,index,array){return item>2}) //[3, 4, 5, 4, 3]//*//*逐項執行的迭代//*//map有返回結果numbers.map(function(item,index,array){return item*2}) //[2, 4, 6, 8, 10, 8, 6, 4, 2]//forEach沒有返回結果numbers.forEach(function(item,index,array){array[index] = item*2}) ;alert(numbers); //[2, 4, 6, 8, 10, 8, 6, 4, 2]
大家可以根據不同的需求來調用js提供的原生的迭代方法!!
4、歸併方法
最後是歸併方法reduce()和reduceRight(),兩者都會迭代數組所有項,其中reduce()從第一項開始,而reduceRight()從數組最後一項開始,出此之外兩個函數完全相同
//reduce()中pre第一次為數組第一項,第二次開始為第一次函數傳回值為prevar values = [1,2,3,4,5];var sum=values.reduce(function(pre,cur,index,array){return pre + cur});alert(sum); //15//reduceRight()中pre第一次為數組最後一項,第二次開始為第一次函數傳回值為prevar values = [1,2,3,4,5];var sum=values.reduceRight(function(pre,cur,index,array){return pre + cur});alert(sum); //15
其實forEach()也完全可以實現,並且比以上兩個歸併方法更好理解,怎樣實現這功能也看個人習慣。
javascript-數組的常用方法