今天來整理那些 Array 方法們:)
陣列爲似列表的物件,利用索引值取內容值,透過 Array
所提供的方法,我們可以進行許多處理,今天就整理一下常見的這些 Array
方法。
開始之前來一個簡單的陣列
var arraytest = [1,2,3,4,5];
console.log(arraytest.valueOf()); //[1,2,3,4,5]
console.log(arraytest.toString()); //1,2,3,4,5
console.log(arraytest.join()); //1,2,3,4,5
console.log(arraytest.join("-")); //1–2–3–4–5
var unshiftTest = arraytest.unshift(0);
console.log(arraytest);//[0, 1, 2, 3, 4, 5]
console.log(unshiftTest); //6
var pushTest = arraytest.push(6);
console.log(arraytest);//[1, 2, 3, 4, 5, 6]
console.log(pushTest); //6
var shiftTest = arraytest.shift();
console.log(arraytest);//[1, 2, 3, 4, 5]
console.log(shiftTest); //0
var popTest = arraytest.pop();
console.log(arraytest);//[1, 2, 3, 4, 5]
console.log(popTest);//6
5.splice( ):可新增刪除,語法 array.splice(start[, deleteCount[, item1[, item2[, …]]]])
,start
表示開始編輯的位置; deleteCount
表示刪除的元素數量;item1, item2, …
表示從 start
開始,要加入陣列的元素,若無指定任何元素,則依照 start
和 deleteCount
刪除陣列的元素。回傳值爲被刪除的元素陣列。若沒有元素被刪除,則回傳空陣列。
var addSplice = arraytest.splice(0,0,0);
console.log(arraytest); //[0, 1, 2, 3, 4, 5]
console.log(addSplice); //[]
var addSplice2 = arraytest.splice(2,0,8);
console.log(arraytest); //[0, 1, 8, 2, 3, 4, 5]
console.log(addSplice2); //[]
var deleteSplice = arraytest.splice(0,1);
console.log(arraytest); //[1, 8, 2, 3, 4, 5]
console.log(deleteSplice); //[0]
var deleteSplice = arraytest.splice(1,1);
console.log(arraytest); //[1, 2, 3, 4, 5]
console.log(deleteSplice); //[8]
var mixSplice = arraytest.splice(0,1,8,9);
console.log(arraytest); //[8, 9, 2, 3, 4, 5]
console.log(mixSplice); //[1]
map( )
方法可以接收一個函數當做參數,map( )
方法會傳入該函數三個參數,分別爲目前元素、目前索引值和原陣列。var mapTest =[1, 2, 3];
var mapTestResult = mapTest.map(function (item,index,array) {
return item + 2;
});
console.log(mapTest);// [1, 2, 3]
console.log(mapTestResult);// [3, 4, 5]
map( )
方法不會跳過 undefined
和 null
,但是會跳過空位。
var mapTest2 =[1, 2 ,undefined,,null];
var mapTestResult2 = mapTest2.map(function (item,index,array) {
return item + 2;
});
console.log(mapTest2);// [1, 2, undefined, empty, null]
console.log(mapTestResult2);// [3, 4, NaN, empty, 2]
map( )
方法相似,但是不會回傳新陣列,而是對原陣列進行遍歷操作var forEachTest =[1, 2, 3];
forEachTest.forEach(function (item,index,array) {
console.log(item);
//1
//2
//3
});
當我們需要得到操作後的新陣列,使用 map( )
方法,否則使用 forEach( )
即可。
start
代表自哪一個索引值開始取值,第二個參數 end
,代表取值到哪一個值之前。此爲淺拷貝。var arraytest = [1,2,3,4,5];
console.log(arraytest.slice(1,3)); //[2, 3]
var sortTest =[112, 22, 32];
sortTest.sort();
console.log(sortTest); //[112, 22, 32]
//以編碼位置而非數字大小排列,因此112的第一個位置1是最小的,排序第一,接著是22的2,接著是32的3
var sortTest2 =[112, 22, 32];
sortTest2.sort(function(a,b){
return a>b;
});
console.log(sortTest2); //[22, 32, 112]
var filterTest = [1,2,3,4,5];
var filterTestResult = filterTest.filter(function(item,index,array){
return item > 3;
});
console.log(filterTestResult); //[4, 5]
var reverseTest = [1,2,3,4,5];
var reverseTestResult = reverseTest.reverse();
console.log(reverseTestResult); //[5, 4, 3, 2, 1]
以上是今天對陣列方法的小整理,並非所有 Array 方法,有興趣可以到 MDN 一一查看。