合并數組
方法:concat()
描述:連接配接兩個或更多的數組,并傳回結果。
文法:arrayObject.concat(arrayX,arrayX,……,arrayX)
參數:必需。該參數可以是具體的值,也可以是數組對象。可以是任意多個。
注意:該方法不會改變現有的數組,而僅僅會傳回被連接配接數組的一個副本。
e.g.
var a = [,,],
b=[,,];
console.log(a.concat(,));//1,2,3,4,5
console.log(a.concat(b));//1, 2, 3, 2, 3, 4
建立新數組
方法:slice()
描述:從已有的數組中傳回標明的元素。
文法:array.slice(start, end)
參數:
start:必需。規定從何處開始選取。如果是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。
end:可選。規定從何處結束選取。該參數是數組片斷結束處的數組下标。如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。
注意:該方法不會改變現有的數組,而僅僅會傳回一個新的數組。
e.g.
var a = [,,,];
console.log(a.slice(,));//[1, 2]
連接配接數組
方法:join()
描述:将所有的數組元素連接配接成一個字元串。元素是通過指定的分隔符進行分隔的。
文法:arrayObject.join(separator)
參數:可選。指定要使用的分隔符。如果省略該參數,則使用逗号作為分隔符。
注意:該方法不會改變現有的數組,而僅僅會傳回一個字元串。
e.g.
var arr = new Array()
arr[] = "George"
arr[] = "John"
arr[] = "Thomas"
console.log(arr.join());//George,John,Thomas
console.log(arr.join("_"));//George_John_Thomas
删除數組元素
删除數組最後一個元素
方法:pop()
描述:删除并傳回數組的最後一個元素。
文法:arrayObject.pop()
參數:無
注意:該方法會修改原數組。但是如果數組已經為空,則 pop() 不改變數組,并傳回 undefined 值。
e.g.
var arr = new Array()
arr[] = "George"
arr[] = "John"
arr[] = "Thomas"
console.log(arr.pop());//Thomas
console.log(arr);//"George", "John"
删除數組第一個元素
方法:shift()
描述:删除并傳回數組的第一個元素。
文法:arrayObject.shift()
參數:無
注意:該方法會修改原數組。但是如果數組已經為空,則 shift()不改變數組,并傳回 undefined 值。
e.g.
var arr = new Array()
arr[] = "George"
arr[] = "John"
arr[] = "Thomas"
console.log(arr.shift());//George
console.log(arr);//"John", "Thomas"
添加數組元素
在數組末尾添加元素
方法:push()
描述:可向數組的末尾添加一個或多個元素,并傳回新的長度。
文法:arrayObject.push(arr1,arr2,….,arrx)
參數:至少要有一個元素
注意:該方法會修改原數組,并傳回新數組的長度,而不是新的數組。
e.g.
var arr = new Array()
arr[] = "George"
arr[] = "John"
arr[] = "Thomas"
console.log(arr.length);//
console.log(arr.push("James"));//
console.log(arr);//"George", "John", "Thomas", "James"
在數組開頭添加元素
方法:unshift()
描述:可向數組的開頭添加一個或多個元素,并傳回新的長度。
文法:arrayObject.push(arr1,arr2,….,arrx)
參數:至少要有一個元素
注意:該方法會修改原數組。并傳回新數組的長度,而不是新的數組。
unshift() 方法無法在 Internet Explorer 中正确地工作!
e.g.
var arr = new Array()
arr[] = "George"
arr[] = "John"
arr[] = "Thomas"
console.log(arr.length);//
console.log(arr.unshift("William"));//
console.log(arr);//"William", "George", "John", "Thomas"
插入數組元素
方法:splice()
描述:向數組中添加/删除項目,然後傳回被删除的項目。
文法:arrayObject.splice(index,howmany,item1,…..,itemX)
參數:
index:必需。整數,規定添加/删除項目的位置,使用負數可從數組結尾處規定位置。
howmany:必需。要删除的項目數量。如果設定為 0,則不會删除項目。
item1, …, itemX:可選。向數組添加的新項目。
注意:該方法會改變原始數組。如果從 arrayObject 中删除了元素,則傳回的是含有被删除的元素的數組。
e.g.
插入數組元素:
var arr = ["A","B","C","D"];
//在位置插入“新元素”
arr.splice(,,"新元素1")
console.log(arr);//"A", "B", "新元素1", "C", "D"
删除并插入數組元素:
var arr = ["A","B","C","D"];
//從位置開始,删除後面的個元素,并插入“新元素”、“新元素”
arr.splice(,,"新元素1","新元素2");//"C"
console.log(arr);//"A", "B", "新元素1", "新元素2", "D"
數組排序
方法:sort()
描述:用于對數組的元素進行排序,該方法沒有傳回值。
文法:arrayObject.sort(sortby)
參數:可選。規定排序順序。必須是函數。
注意:該方法會改變原始數組。
沒參數時:
注意!沒參數時,sort()方法預設将所有的數組元素轉化成字元串來進行比較排序,即按照字元編碼的順序進行排序!
e.g.
var a=[,,,,,,,,,];
console.log(a.sort())//1, 10, 2, 3, 4, 5, 6, 7, 8, 9
//比較是按照轉化後的首個字元編碼的大小來進行的
//"10"的話實際上比較的是"1"
console.log("1".charCodeAt());//49
console.log("10".charCodeAt());//49
console.log("2".charCodeAt());//50
有參數時:
如果想按照其他标準進行排序,就需要提供比較函數.
該函數要比較兩個值,然後傳回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其傳回值如下:
若 a 小于 b,在排序後的數組中 a 應該出現在 b 之前,則傳回一個小于 0 的值。
若 a 等于 b,則傳回 0。
若 a 大于 b,則傳回一個大于 0 的值。
e.g.
//比較函數
function compare(a,b){
if(a<b){
return -;
}
if(a>b){
return ;
}
return ;
}
var a=[,,,,,];
console.log(a.sort(compare));//1, 6, 7, 8, 9, 10
倒置數組
方法:reverse()
描述:颠倒數組中元素的順序。
文法:arrayObject.reverse()
參數:無
注意:該方法會改變原來的數組,而不會建立新的數組。
e.g.
var a = [,,];
console.log(a.reverse());//3, 2, 1
查找數組元素
查找指定元素
方法:find()
描述:傳回傳入一個測試條件(函數)符合條件的數組第一個元素。
文法:array.find(function(currentValue, index, arr),thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。對于空數組,函數是不會執行的。
e.g.
function check(num){
return num>;
}
var a = [,,];
console.log(a.find(check));//3
查找指定元素的索引
方法:findIndex()
描述:傳回傳入一個測試條件(函數)符合條件的數組第一個元素位置。如果沒有符合條件的元素傳回 -1。
文法:array.findIndex(function(currentValue, index, arr),thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。對于空數組,函數是不會執行的。
e.g.
function check(num){
return num>;
}
var a = [,,];
console.log(a.findIndex(check));//2
從指定位置向後查找指定元素
方法:indexOf()
描述:傳回某個指定元素在數組中首次出現的位置。如果沒有符合條件的元素傳回 -1。
文法:array.indexOf(item,start)
參數:
item:必須。查找的元素。
start:可選的整數參數。如省略該參數,則将從數組頭部開始檢索。
注意:該方法不會改變原來的數組。
e.g.
var a = ["a","b","c","b"];
console.log(a.indexOf("b"));//1
從指定位置向前查找指定元素
方法:lastIndexOf()
描述:傳回某個指定元素在數組中首次出現的位置。如果沒有符合條件的元素傳回 -1。
文法:array.lastIndexOf(item,start)
參數:
item:必須。查找的元素。
start:可選的整數參數。如省略該參數,則将從數組尾部開始檢索。
注意:該方法不會改變原來的數組
e.g.
var a = ["a","b","c","b"];
console.log(a.lastIndexOf("b"));//3
判斷數組元素是否滿足指定條件
檢測每個元素是否都符合條件。
方法:every()
描述:檢測數組所有元素是否都符合指定條件(通過函數提供),如果所有元素都通過檢測傳回 true,否則傳回 false。
文法:array.every(function(currentValue,index,arr), thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。不會對空數組進行檢測。
e.g.
function check(num){
return num>;
}
var a = [,,];
console.log(a.every(check));//false
檢測數組元素是否有符合條件的。
方法:some()
描述:檢測數組中的元素是否滿足指定條件(函數提供),如果有元素通過檢測傳回 true(并停止檢測),否則傳回 false。
文法:array.some(function(currentValue,index,arr), thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。不會對空數組進行檢測。
e.g.
function check(num){
return num>;
}
var a = [,,];
console.log(a.some(check));//true
過濾數組
方法:filter()
描述:建立一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。如果沒有符合條件的元素則傳回空數組。
文法:array.every(function(currentValue,index,arr), thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。不會對空數組進行檢測。
e.g.
function check(num){
return num>;
}
var a = [,,,];
console.log(a.filter(check));//[3, 4]
周遊數組
無傳回值
方法:forEach()
描述:調用數組的每個元素,并将元素傳遞給回調函數。該方法沒有傳回值。
文法:array.forEach(function(currentValue, index, arr), thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。不會對空數組進行檢測。
e.g.
var a = [,,,],
sum=;
function check(currentValue){
return sum+=currentValue;
}
console.log(a.forEach(check))//undefined
console.log(sum)//10
有傳回值
方法:map()
描述:傳回一個新數組,數組中的元素為原始數組元素調用函數處理後的值。
文法:array.map(function(currentValue,index,arr), thisValue)
參數:
function(currentValue, index,arr):必需。函數,數組中的每個元素都會執行這個函數。
函數參數:
currentValue:必需。目前元素的值
index:可選。當期元素的索引值
arr :可選。當期元素屬于的數組對象
thisValue: 可選。對象作為該執行回調時使用,傳遞給函數,用作 “this” 的值。如果省略了 thisValue ,”this” 的值為 “undefined”。
注意:該方法不會改變原來的數組。不會對空數組進行檢測。
e.g.
var a = [,,,],
sum=;
function check(currentValue){
return currentValue*;
}
//周遊輸出
console.log(a.map(check));//[2, 4, 6, 8]
參考資料:
JavaScript Array 對象