Javascript - 數(shù)組常見方法使用

簡單介紹一下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);
結(jié)果.png
  • 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);
結(jié)果.png
  • 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);
結(jié)果.png
  • pop
    從數(shù)組中刪除最后一個元素,改變原數(shù)組囚聚,返回“被刪除”的元素靖榕;
var arr = ['1', '2', '3'];
var result = arr.pop();
console.log("arr:", arr);
console.log("result:", result);
結(jié)果.png
  • shift
    刪除首個數(shù)組元素,并返回首個元素的值顽铸。改變原數(shù)組茁计;
var arr = ['1', '2', '3'];
var result = arr.shift();
console.log("arr:", arr);
console.log("result:", result);
結(jié)果.png
  • unshift
    向數(shù)組的開頭添加一個或更多元素,并返回新的長度谓松。改變原數(shù)組星压;
var arr = ['1', '2', '3'];
var result = arr.unshift('10', '11');
console.log("arr:", arr);
console.log("result:", result);
結(jié)果.png
  • 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);
image.png
  • 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);

這里分別解釋一下:

  1. 刪除元素选浑,刪除元素只需要兩個參數(shù)玄叠;
    arr.splice(0, 3);
    第一個參數(shù)代表要從什么地方開始刪除读恃;
    第二個參數(shù)代表寺惫,要刪除的元素個數(shù)西雀;

  2. 插入元素艇肴,插入元素至少需要三個參數(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);
結(jié)果.png

因為默認是通過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é)果.png

上面的結(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);
結(jié)果.png
  • 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));
image.png
  • 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);
結(jié)果.png
  • 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);
結(jié)果.png
  • 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);
結(jié)果.png
  • 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);
結(jié)果.png
  • 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);
image.png

ES6中新增的數(shù)組方法,后續(xù)學習到在補充雳灾。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谎亩,一起剝皮案震驚了整個濱河市匈庭,隨后出現(xiàn)的幾起案子阱持,更是在濱河造成了極大的恐慌衷咽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桶现,死亡現(xiàn)場離奇詭異,居然都是意外死亡相寇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來页藻,“玉大人植兰,你說我怎么就攤上這事楣导。” “怎么了筒繁?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵驮宴,是天一觀的道長堵泽。 經(jīng)常有香客問我迎罗,道長纹安,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮可帽,結(jié)果婚禮上映跟,老公的妹妹穿的比我還像新娘努隙。我一直安慰自己荸镊,他們只是感情好躬存,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盾剩,像睡著了一般告私。 火紅的嫁衣襯著肌膚如雪德挣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天唠帝,我揣著相機與錄音襟衰,去河邊找鬼。 笑死粪摘,一個胖子當著我的面吹牛瀑晒,可吹牛的內(nèi)容都是我干的绍坝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼苔悦,長吁一口氣:“原來是場噩夢啊……” “哼轩褐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玖详,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤把介,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蟋座,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拗踢,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡券膀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年雀监,在試婚紗的時候發(fā)現(xiàn)自己被綠了好乐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡淮蜈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鹉梨,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站胰柑,受9級特大地震影響袍啡,放射性物質(zhì)發(fā)生泄漏蔗牡。R本人自食惡果不足惜信粮,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸痴柔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琢蛤。三九已至,卻和暖如春霜旧,著一層夾襖步出監(jiān)牢的瞬間崎逃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工凯旋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糠聪,地道東北人夭苗。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容