js數組
變量用來存儲數據,一個變量只能存儲一個內容。如果你想存儲多個內容,那么就可以用數組解決,一個數組變量可以存放多個數據,好比一個團,團你有很多人。數組是一個值得集合,每個值都有一個索引號,從0開始,每個索引都有一個相應的值,根據需要添加更多數值。
數組的方法
即對一個或多個數組進行的一系列操作
-
數組連接方法:concat()方法,用于連接兩個或多個數組,返回一個新數組,不改變原來的數組,僅僅返回被連接數組的一個副本。
語法:arrayObject.concat(array1,array2,...,arrayN)
用法如下:<script type="text/javascript"> var mya = new Array(3); mya[0] = "1"; mya[1] = "2"; mya[2] = "3"; document.write(mya.concat(4,5)+"<br>"); document.write(mya); </script>
返回結果:
1,2,3,4,5
1,2,3
-
指定分隔符連接數組元素方法:join()方法,該方法用于把數組中的所有元素放入一個字符串,元素是通過指定的分隔符進行分隔。
語法:arrayObject.join(分隔符(默認為逗號));
用法:<script type="text/javascript"> var myarr = new Array(3) myarr[0] = "I"; myarr[1] = "love"; myarr[2] = "JavaScript"; document.write(myarr.join(".")); </script>
運行結果:
I.love.JavaScript
-
顛倒數組元素順序:reverse()方法,用于顛倒數組中元素的順序。
語法:arrayObject.reverse();
用法如下:<script type="text/javascript"> var myarr = new Array(3) myarr[0] = "1" myarr[1] = "2" myarr[2] = "3" document.write(myarr + "<br />") document.write(myarr.reverse()) </script>
運行結果:
1,2,3
3,2,1
-
選定元素:slice()方法,該方法可從已有的數組中返回選定的元素。
語法:arrayObject.slice(start,end)-
參數說明:
start,必需,規定從何處開始選取。如果為負數,那么它規定從數組尾部算起的位置,即:-1為最后一個元素,-2為倒數第二個元素,以此類推。end,可選,規定從何處結束選取。該參數是數組片段結束處的數組下標(不包含該下標所指元素)。如果沒有指定參數,那么切分的數組包含從start到數組結束的所有元素。如果為負數,那么它規定從數組尾部算起。該方法不會修改數組,而是返回一個子數組。
注意:
String.slice()與Array.slice()相似。
用法如下:<script type="text/javascript"> var myarr = new Array(1,2,3,4,5,6); document.write(myarr + "<br>"); document.write(myarr.slice(2,4) + "<br>"); document.write(myarr); </script>
-
運行結果:
1,2,3,4,5,6
3,4
1,2,3,4,5,6
-
數組排序:sort()方法,該方法用于使數組中的元素按照一定的順序排序。
語法:arrayObject.sort(方法函數)- 參數說明:可選,規定排序順序,必須是函數。如果不指定<方法函數>,則按unicode碼順序排列:myArray.sort(sortMethod);。該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數a和b,起返回值如下:
若返回值 <= -1,則表示A在排序后的序列中出現在B之前。
若返回值 > -1 && < 1,則表示A和B具有相同的排列順序。
若返回值 >= -1,則表示A在排序后的序列中出現在B之后。
例子:
- 參數說明:可選,規定排序順序,必須是函數。如果不指定<方法函數>,則按unicode碼順序排列:myArray.sort(sortMethod);。該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數a和b,起返回值如下:
function sortNum(a,b) {
return a - b;
//升序,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br>");
document.write(myarr.sort(sortNum));
運行結果:
80,16,50,6,100,1
1,6,16,50,80,100
-
數組元素刪除(數組拼接):splice()方法,用于刪除數組中從特定位置開始的元素,返回刪除的值,會修改原數組。
語法:arrayObject.splice(start,end,添加的項...)- 參數說明:start,必需,規定從何處開始刪除。數字為元素下標(刪除值包括該下標)。
end,可選,表示刪除的數目。
splice()方法還可以添加元素,因此稱為字符串拼接。
- 參數說明:start,必需,規定從何處開始刪除。數字為元素下標(刪除值包括該下標)。
例子如下:
var arr=[1,2,3,4,5];
arr.splice(2);//returns [3,4,5]
arr;//[1,2]
var arr=[1,2,3,4,5];
arr.splice(2,2);//returns [3,4]
arr;//[1,2,5]
var arr=[1,2,3,4,5];
arr.splice(1,1,"a","b");//returns [2]
arr;//[1,"a","b",3,4,5]
-
數組遍歷:forEach()方法,用于遍歷數組。不會修改原數組。
語法:arrayObject.forEach(function(x,index,a(可選){})-
參數說明:x,表示數組任意的元素,index表示元素的索引值,a表示指向數組,返回值為布爾值。
例子如下:var arr=[1,2,3,4,5]; arr.forEach(function(x,index,a){ console.log(x + "|" +index +"|" + (a===arr));//console.log打印數據,相當于C語言里的printf });
-
運行結果:
1|0|true
2|1|true
以此類推
-
數組映射:map()方法,該方法用于對每一個數組元素進行操作,同樣不會修改原數組。
語法:arrayObject.map(function(x){});
例子:var arr=[1,2,3]; arr.map(function(x){ return x+10; });//return [11,12,13] arr;//[1,2,3]
-
數組過濾:filter()方法,用于篩選一些我們需要的數組元素。不會修改原數組。
語法:arrayObject.filter(function(x,index){})
參數說明:x,表示數組任意的元素,index表示元素的索引值。
例子:var arr=[1,2,3,4,5,6,7,8,9,10]; arr.filter(function(x,index){ return index%3===0||x>=8; });
運行結果:
[1,4,7,8,9,10]
數組判斷:every()和some()方法,用于判斷數組元素是否滿足條件,返回布爾值,與every()不同的是,some()表示只要有一個元素滿足條件就返回true。
reduce()和reduceRight()方法,用于數組元素之間的兩兩比較,最終得到一個值(把數組聚合成一個結果),如:找最大值,求和。而reduceRight()表示從右邊開始兩兩比較。
-
數組檢索:indexOf()和lastIndexOf()方法,用于檢索每個元素在數組中的索引值。lastIndexOf()表示從后往前檢索。
語法:arrayObject.indexOf(x,start),arrayObject.lastIndexOf(x,start)- 參數說明:x,表示需要檢索的元素,start表示從何處開始檢索(下標值),如果start為負數表示從倒數第幾個元素開始檢索。
判斷某個值是否是數組:Array.isArray()
轉換方法:toString()等。
棧方法:push()和pop()