1. 程式人生 > >js Array數組對象常見方法總結

js Array數組對象常見方法總結

apply join() type 方法 創建 數字 result right fin

Array對象一般用來存儲數據。

其常用的方法包括:

1、concatc()方法

concat() 方法用於合並兩個或多個數組。它不會更改現有數組,而是返回一個新數組。

例如:

var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=arr1.concat(arr2,"7",8,[9,10]);
document.write(arr3);//1,2,3,4,5,6,7,8,9,10

2、join()方法

join方法通過指定的分隔符將數組連接成字符串。默認的分隔符(逗號)","。它返回一個所有數組元素連接的字符串。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.join());
//默認為逗號分隔 輸出 hello,world,aha!
var arr1=["hello","world","aha!"];
document.write(arr1.join("-"));//hello-world-aha!

如果分隔符是空字符串(""),則所有元素之間都沒有任何字符。

var arr1=["hello","world","aha!"];
document.write(arr1.join(""));//helloworldaha!

3、pop()、push()、shift()、unshift()方法

想到其中的一個,另外一個都能呼之欲出,所以我就寫在在一起了。

這四個方法功能類似:

pop()方法:

刪除數組的最後一個元素,並且返回刪除的元素值。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.pop());//aha!

shift()方法:

刪除數組的第一個元素,並且返回刪除的元素值。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.shift());//hello

push()方法:

將一個或多個元素添加到數組的末尾,並返回數組的新長度。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.push(
1,2,3));//6 document.write(arr1);//hello,world,aha!,1,2,3

此外,運用push()通過call()或apply()方法我們可以合並二個數組:

例如:

var arr1=["hello","world","aha!"];
var arr2=[1,2,3];
var arr3=Array.prototype.push.apply(arr1,arr2);
document.write(arr3);//6
document.write(arr1);//hello,world,aha!,1,2,3

var arr1=["hello","world","aha!"];
var arr2=[1,2,3];
var arr3=Array.prototype.push.call(arr1,"1","2","3","4");
document.write(arr3);//7
document.write(arr1);//hello,world,aha!,1,2,3,4

unshift():

將一個或多個元素添加到數組的開頭,並返回新數組的長度。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.unshift(1,"2"));//5
document.write(arr1);//1,2,hello,world,aha!

該方法也能夠通過 call 或 apply 方法作用於類似數組的對象上。

4、reverse() 方法

將數組中元素的位置顛倒。返回該數組的引用。

例如:

var arr1=["hello","world","aha!"];
document.write(arr1.reverse());//aha!,world,hello

5、sort()方法

對數組的元素進行排序,並返回數組。如果不提供參數,默認排序順序是根據字符串Unicode碼點。其他標準排序要提供一個比較函數進行排序。返回返回排序後的數組。原數組已經被排序後的數組代替。

例如:

var arr1=["c","abc","bc"];
document.write(arr1.sort());//bb,cc,da

如果不想按此排序,可以提供一個比較函數來自行排序。該比較函數compareFunction(a,b)一般有二個參數即 a 和 b 是兩個將要被比較的元素。

假設比較的是數字,數組以升序排列,則函數可返回a-b(正數);數組以降序排列,則函數可返回b-a(負數);排序位置不變,返回0;

例如:

var arr1=[6,2,20,5,8,3];
document.write(arr1.sort(compareNums));//2,3,5,6,8,20   升序
function compareNums(a,b){return a-b;}
var arr1=[6,2,20,5,8,3];
document.write(arr1.sort(compareNums));//20,8,6,5,3,2  降序
function compareNums(a,b){return b-a;}

可以運用隨機函數Math.random()來進行隨機排序:

var arr1=[6,2,20,5,8,3];
document.write(arr1.sort(compareNums));//
function compareNums(a,b){
return (0.5-Math.random());//隨機返回 正數 負數和零
}

6、slice()方法

返回一個從開始到結束(不包括結束)選擇形成的數組。原始數組不會被修改,而返回一個新數組。

語法:arr.slice(start,end)

start為負數則從數組倒數的位置開始,-1表示最後一個元素。

如果省略start,則索引從0開始;

省略end,則一直提取到數組末尾。

例如:

var arr1=[6,2,20,5,8,3];
document.write(arr1.slice(-3,-1));//5,8
var arr1=[6,2,20,5,8,3];
document.write(arr1.slice());//6,2,20,5,8,3 

7、splice()方法

向數組中添加/刪除項目,然後返回被刪除的項目。該方法與slice不同的是,它會修改原始的數組。

語法:splice(start,deleteCount,items)

start:指定修改的開始位置。如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組末位開始的第幾位。

deleteCount:可選參數,表示刪除的元素個數,等於0表示不移除元素。

items:要添加進數組的元素。

例如:

var arr1=[6,2,20,5,8,3];
document.write(arr1.splice(1,0,"33"));//不移除元素
document.write(arr1);//6,33,2,20,5,8,3  原始數組改變

8、toString()

方法可把數組轉換為字符串,並返回結果。

Array對象覆蓋了 ObjecttoString 方法。

對於數組對象的toString 方法返回一個字符串,該字符串由數組中的每個元素的 toString() 返回值經調用 join() 方法連接(由逗號隔開)組成。

例如:

var arr1=["a","b","c","d"];
document.write(arr1.toString());//a,b,c,d

9、indexOf方法

返回在數組中可以找到一個給定元素的第一個索引,如果不存在,則返回-1。

語法:

arr.indexOf(searchElement,fromIndex);

searchElement 表示要查找的元素。

fromIndex 表示開始查找的位置。默認為0,表示從頭開始查找;如果該索引值大於或等於數組長度,意味著不會在數組裏查找,返回-1。負數的話表示從末尾開始,-1表示最後一個元素。

例如:

var arr1=["22","4","hello","world"];
document.write(arr1.indexOf("hello"));//2
var arr1=["22","4","hello","ss","world"];
document.write(arr1.indexOf("hello",-3));//2      其中負3表示從"hello"處開始查找。但是還是從前開始查找元素,so  輸出值是2

10、其他一些es5新增的方法

eyery()、some()、map()、filter()、forEach()、reduce()

這些方法都可以接受一個回調函數,然後對數組進行操作。而這個回調函數也都可以接受三個參數:

value,
index,
array
function callback(value,index,array){/*  ... */}

這三個參數分別代表:元素值,元素的索引,原數組。

先來看第一個方法 every()方法

every()方法測試數組的所有元素是否都通過了指定函數的測試。如果有一個元素調用回調函數返回false,則函數返回false。

例如:

var arr1=[20,30,40,50];
var result=arr1.every(function(value){return value>10});
alert(result);//true

與every方法類似的some()方法如下:

方法測試數組中的某些元素是否通過回調函數實現的測試。其中有一個能返回true,some方法則返回真值。

例如:

var arr1=[20,30,40,50];
var result=arr1.some(function(value){return value>30});
alert(result);//true

map()方法:

map表示“映射”,它會創建一個新數組,其結果是該數組中的每個元素都調用回調函數後返回的結果。

例如:

var arr1=[20,30,40,50];
var result=arr1.map(function(value){return value/10});
alert(result);//2,3,4,5

filter()方法

方法創建一個新數組, 其包含通過所提供函數實現的測試的所有元素。如果數組中的元素執行回調函數返回true,則保留該元素,false不保留。

var arr1=[20,30,40,50,0,"","55"];
var result=arr1.filter(function(value){return value});//能轉化為false的值都將被拋棄
alert(result);//20,30,40,50,55  

forEach()方法

方法對數組的每個元素執行回調函數。相當於傳統的循環遍歷數組。返回值為undefined.

例如:

var arr1=[20,30,40,50,0,"55",undefined,,6];
var result=arr1.forEach(function(value,index){
document.write("arr1["+index+"]"+"="+value+"</br>")
});//arr1[0]=20
   arr1[1]=30
   arr1[2]=40
   arr1[3]=50
   arr1[4]=0
   arr1[5]=55
   arr1[6]=undefined //索引7被省略了
   arr1[8]=6

reduce方法

方法對累加器和數組中的每個元素 (從左到右)應用一個函數,將其減少為單個值。

語法:array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue);

initialValue表示初始值,沒有提供這個可選初始值時accumulator取數組第一個值,currentValue取第二個值。

這個回調函數接受四個參數:

accumulator:初始值

currentValue:當前值

index:索引

array:數組本身

例如:

var arr1=[2,3,4,5];
var result=arr1.reduce(function(a,b){return a+b},10);
alert(result);//24  10+2+3+4+5

reduceRight()方法

該方法與reduce方法類似,只是它從數組的末尾開始調用函數。

var arr1=[[2],[3],[4],[5]];
var result=arr1.reduceRight(function(a,b){return a.concat(b)},[6]);
alert(result);//6,5,4,3,2

js Array數組對象常見方法總結