簡單介紹一下javascript中數(shù)組常見方法的使用
- concat
通過合并(連接)現(xiàn)有數(shù)組來創(chuàng)建一個新數(shù)組
恬汁,說明不會改變原數(shù)組伶椿;
var arr1 = ['1', '2', '3'];
var arr2 = ['a', 'b', 'c'];
var result = arr1.concat(arr2);
console.log("result:", result);
console.log("arr1:", arr1);
console.log("arr2:", arr2);
//注意concat后面可以多個參數(shù),如:
var result1 = arr1.concat(arr2, "I", "II");
console.log("result1:", result1);
- join
將所有數(shù)組元素結(jié)合為一個字符串,元素是通過指定的分隔符進行分隔的悬垃,默認使用','號分割游昼,不改變原數(shù)組
甘苍。
var arr1 = ['1', '2', '3'];
var arr2 = ['a', 'b', 'c'];
var result = arr1.concat(arr2);
var joinResultNoParams = result.join();
var joinResultParams = result.join('-');
console.log("joinResultNoParams:", joinResultNoParams);
console.log("joinResultParams:", joinResultParams);
- push
在數(shù)組結(jié)尾處向數(shù)組添加一個新的元素尝蠕,改變原數(shù)組
,返回新數(shù)組的長度载庭;
var arr = ['1', '2', '3'];
//push后可以添加多個參數(shù)看彼,都會依次添加到數(shù)組后面
var result = arr.push('4');
console.log("arr:", arr);
console.log("result:", result);
- pop
從數(shù)組中刪除最后一個元素,改變原數(shù)組
囚聚,返回“被刪除”的元素靖榕;
var arr = ['1', '2', '3'];
var result = arr.pop();
console.log("arr:", arr);
console.log("result:", result);
- shift
刪除首個數(shù)組元素,并返回首個元素的值顽铸。改變原數(shù)組
茁计;
var arr = ['1', '2', '3'];
var result = arr.shift();
console.log("arr:", arr);
console.log("result:", result);
- unshift
向數(shù)組的開頭添加一個或更多元素,并返回新的長度谓松。改變原數(shù)組
星压;
var arr = ['1', '2', '3'];
var result = arr.unshift('10', '11');
console.log("arr:", arr);
console.log("result:", result);
- slice
用數(shù)組的某個片段切出新數(shù)組,返回選定的元素(數(shù)組)鬼譬,不改變原數(shù)組
娜膘;
參數(shù)說明
/**
* start:要抽取的片斷的起始下標。如果是負數(shù)优质,則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置巩螃。也就是說避乏,-1 指字符串的最后一個字符,-2 指倒數(shù)第二個字符畏纲,以此類推
* end:緊接著要抽取的片段的結(jié)尾的下標盗胀。若未指定此參數(shù)票灰,則要提取的子串包括 start 到原字符串結(jié)尾的字符串屑迂。如果該參數(shù)是負數(shù)惹盼,那么它規(guī)定的是從字符串的尾部開始算起的位置
*
* */
array.slice(start,end)
var arr = ['1', '2', '3', '4', '5'];
var result = arr.slice(0, 3);
console.log("arr:", arr);
console.log("result:", result);
- splice
用于添加或刪除數(shù)組中的元素手报。改變原數(shù)組
掩蛤;
參數(shù)說明
/**
* index : 必需揍鸟。規(guī)定從何處添加/刪除元素阳藻。該參數(shù)是開始插入和(或)刪除的數(shù)組元素的下標,必須是數(shù)字畅涂。
* howmany: 可選午衰。規(guī)定應該刪除多少元素臊岸。必須是數(shù)字帅戒,但可以是 "0"逻住。如果未規(guī)定此參數(shù)迎献,則刪除從 index 開始到原數(shù)組結(jié)尾的所有元素。
* item1,.....,itemX: 可選扒秸。要添加到數(shù)組的新元素
*
* return : 如果從 array 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組写烤。
* */
array.splice(index,howmany,item1,.....,itemX)
//1.刪除元素 一個或者多個,如果第二個參數(shù)為0洲炊,那么等于沒有刪除
var arr = ['1', '2', '3', '4', '5'];
var result = arr.splice(0, 3);
console.log("刪除元素 一個或者多個");
console.log("原來的數(shù)組:", arr);
console.log("返回的數(shù)組:", result);
//2.插入元素
var otherArr = ['1', '2', '3', '4', '5'];
var otherResult = otherArr.splice(1, 2, '6', '7');
console.log("插入元素 ");
console.log("原來的數(shù)組:", otherArr);
console.log("返回的數(shù)組:", otherResult);
這里分別解釋一下:
刪除元素选浑,刪除元素只需要兩個參數(shù)玄叠;
arr.splice(0, 3);
第一個參數(shù)代表要從什么地方開始刪除读恃;
第二個參數(shù)代表寺惫,要刪除的元素個數(shù)西雀;插入元素艇肴,插入元素至少需要三個參數(shù)再悼;
otherArr.splice(1, 2, '6', '7');
第一個參數(shù)代表從什么地方開始插入膝但;
第二個參數(shù)代表刪除幾個元素跟束;
后面的參數(shù)代表將第三個開始的參數(shù)全部插入冀宴;
- sort
按照 Unicode code 位置排序,默認升序氧腰,改變原數(shù)組
古拴;
var arr = [2, 3, 11, 5, 4];
arr.sort();
console.log("原來的數(shù)組:", arr);
因為默認是通過Unicode code來進行排序黄痪,所以 11在2前面桅打;
另外可以通過自己的條件來進行排序挺尾,在sort方法加入一個回到函數(shù)
var arr = [2, 3, 11, 5, 4];
arr.sort(function(a, b) {
return a - b;
});
console.log("原來的數(shù)組:", arr)
上面的結(jié)果是升序排序遭铺,如果你想要的是降序魂挂,那么
return b - a;
即可。
如果數(shù)組的是對象元素坠非,那么根據(jù)自己的條件進行判斷即可炎码。
解釋一下返回值:
如果 a-b 小于 0 辅肾,那么 a 會被排列到 b 之前矫钓;
如果 a-b 等于 0 新娜, 那么 a 和 b 的相對位置不變既绩。
如果 a-b 大于 0 饲握, 那么 b 會被排列到 a 之前。
- reverse
用于顛倒數(shù)組中元素的順序衰粹。返回的是顛倒后的數(shù)組铝耻,改變原數(shù)組
。
var arr = [2, 3, 11, 5, 4];
arr.reverse();
console.log("原來的數(shù)組:", arr);
- indexOf和lastIndexOf
都接受兩個參數(shù):查找的值频丘、查找起始位置
不存在搂漠,返回 -1 状答;
存在刀崖,返回位置拍摇。
indexOf 是從前往后查找充活, lastIndexOf 是從后往前查找。
var arr = [2, 3, 11, 5, 4];
console.log(arr.indexOf(3));
console.log(arr.indexOf(10));
console.log(arr.lastIndexOf(5));
console.log(arr.lastIndexOf(10));
- forEach
數(shù)組的每個元素執(zhí)行一次提供的函數(shù)映穗。不會改變原數(shù)組
返回值:undefined
語法:
arr.forEach(callback[, thisArg]);
參數(shù)說明:
/*
callback
為數(shù)組中每個元素執(zhí)行的函數(shù),該函數(shù)接收三個參數(shù):
currentValue 數(shù)組中正在處理的當前元素赘淮。
index可選,數(shù)組中正在處理的當前元素的索引走诞。
array可選蚣旱,forEach() 方法正在操作的數(shù)組。
thisArg可選枕赵,可選參數(shù)拷窜。當執(zhí)行回調(diào)函數(shù)時用作 this 的值(參考對象)涧黄。
*/
注意:沒有辦法中止或者跳出 forEach() 循環(huán)笋妥,除了拋出一個異常。
var arr = [2, 3, 11, 5, 4];
arr.forEach(function(value, index, array) {
console.log(value, index, array);
});
console.log("原來的數(shù)組:", arr);
- every
對數(shù)組的每一項都運行給定的函數(shù),每一項都返回 ture,則返回 true月帝;返回一個布爾值嚷辅,不改變原數(shù)組
;
參數(shù)與forEach一樣扁位。
var arr = [2, 3, 11, 5, 4];
var result = arr.every(function(value, index, array) {
return value > 5;
});
console.log("原來的數(shù)組:", arr);
console.log("結(jié)果:", result);
- some
對數(shù)組的每一項都運行給定的函數(shù)揣炕,任意一項都返回 ture,則返回 true;返回一個布爾值,不改變原數(shù)組
;
參數(shù)與forEach一樣蝠检。
var arr = [2, 3, 11, 5, 4];
var result = arr.some(function(value, index, array) {
return value > 5;
});
console.log("原來的數(shù)組:", arr);
console.log("結(jié)果:", result);
- filter
對數(shù)組的每一項都運行給定的函數(shù)叹谁,返回 結(jié)果為 ture 的項組成的數(shù)組饲梭;返回一個過濾后的新數(shù)組憔涉,不改變原數(shù)組
兜叨;
參數(shù)與forEach一樣衩侥。
var arr = [2, 3, 11, 5, 4];
var result = arr.filter(function(value, index, array) {
return value > 5;
});
console.log("原來的數(shù)組:", arr);
console.log("結(jié)果:", result);
- map
對數(shù)組的每一項都運行給定的函數(shù)茫死,返回每次函數(shù)調(diào)用的結(jié)果組成一個新數(shù)組;返回一個map后的新數(shù)組屡久,不改變原數(shù)組
被环;
參數(shù)與forEach一樣蛤售。
var arr = [2, 3, 11, 5, 4];
var result = arr.map(function(value, index, array) {
return value * 2;
});
console.log("原來的數(shù)組:", arr);
console.log("結(jié)果:", result);
ES6中新增的數(shù)組方法,后續(xù)學習到在補充雳灾。