天天看點

JavaScript常用原生數組方法

合并數組

方法: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 對象

繼續閱讀