【收藏】JavaScript數(shù)組方法速查手冊極簡版

1 概述

1.1 前言

JavaScript數(shù)組方法速查手冊極簡版中共收了32個數(shù)組的常用方法和屬性蕉堰,并根據(jù)方法的用途進行重新排序和分類病线,在文中簡要的介紹了方法作用和用例說明沃缘。收藏備用吧名惩!

文中介紹的過于簡單,想更更多理解相關(guān)內(nèi)容還是要多多動手實踐怒炸!

2 數(shù)組屬性

2.1 length-長度屬性

每個數(shù)組都有一個length屬性宦搬。針對稠密數(shù)組牙瓢,length屬性值代表數(shù)組中元素的個數(shù)。當數(shù)組是稀疏數(shù)組時间校,length屬性值大于元素的個數(shù)矾克。

var array1 = [ 'a', 'b', 'c' ];  
console.log(array1.length);  // 輸出 3
array1.length = 2;
console.log(array1);  // 輸出 [ "a", "b" ]

查看示例程序

3 數(shù)組方法

3.1 Array.isArray-類型判定

Array.isArray() 數(shù)組類型判定。

console.log(Array.isArray([1, 2, 3]));   // 輸出 true
console.log(Array.isArray({num: 123}));   //輸出 false

查看示例程序

3.2 Array.of-創(chuàng)建數(shù)組

Array.of() 從可變數(shù)量的參數(shù)創(chuàng)建數(shù)組憔足,不管參數(shù)的數(shù)量或類型如何胁附。

console.log(Array.of(3));    // 輸出 [3]
console.log(Array.of(1,2,3));   // 輸出 [1,2,3]

查看示例程序

3.3 Array.from-創(chuàng)建數(shù)組

Array.from() 用類數(shù)組或可迭代對象創(chuàng)建新數(shù)組。

console.log(Array.from('abcd'));  // 輸出 [ "a", "b", "c", "d" ]
console.log(Array.from([1, 2, 3], x => x + 1));  // 輸出 [ 2, 3, 4 ]

查看示例程序

4 數(shù)組原型方法

4.1 查找元素

4.1.1 find-按函數(shù)查找

Array.prototype.find() 找到第一個滿足檢測函數(shù)條件的元素滓彰,并返回該元素控妻,沒找到則返回 undefined。

var array1 = [1, 2, 3, 4, 5];
console.log(array1.find(x => x > 3));    // 輸出  4

查看示例程序

4.1.2 findIndex-按函數(shù)查找

Array.prototype.findIndex() 找到第一個滿足檢測函數(shù)條件的元素揭绑,并返回該元素索引弓候。找不到返回-1。

var array1 = [6, 7, 8, 9, 10];
console.log(array1.findIndex(x => x > 8));    // 輸出  3

查看示例程序

4.1.3 indexOf-按元素值查找

Array.prototype.indexOf() 查找元素并返回元素索引值他匪,找不到返回-1菇存。

var arr= [1, 2, 3, 4];
console.log(arr.indexOf(3));    // 輸出 2
console.log(arr.indexOf(6));    // 輸出 -1
console.log(arr.indexOf(2, 2));    // 輸出 -1

第二個參數(shù)表示查找的起始位置。

查看示例程序

4.1.4 lastIndexOf-按元素值查找

Array.prototype.lastIndexOf() 從后向前查找元素并返回元素索引值邦蜜,找不到返回 -1依鸥。

var arr = ['a', 'b', 'c', 'd'];
console.log(arr.lastIndexOf('b'));    // 輸出 1
console.log(arr.lastIndexOf('e'));    // 輸出 -1

查看示例程序

4.2 添加元素

4.2.1 push-尾部添加

Array.prototype.push() 在尾部添加一個或多個元素,返回數(shù)組的新長度悼沈。

var array1= ['a', 'b', 'c'];
console.log(array1.push('d'));   // 輸出 4
console.log(array1);   // 輸出 [ "a", "b", "c", "d" ]

查看示例程序

4.2.2 unshift-頭部添加

Array.prototype.unshift() 在頭部添加一個或多個元素贱迟,并返回數(shù)組的新長度姐扮。

var array1 = [ 4, 5, 6 ];
console.log(array1.unshift(3));    // 輸出 4
console.log(array1);    // 輸出 [ 3, 4, 5, 6 ]
console.log(array1.unshift(1, 2));    // 輸出 6
console.log(array1);    // 輸出 [ 1, 2, 3, 4, 5, 6 ]

查看示例程序

4.3 刪除元素

4.3.1 pop-尾部刪除

Array.prototype.pop() 從尾部刪除一個元素,并返回該元素关筒。

var array1= ['a', 'b', 'c', 'd'];
console.log(array1.pop());    // 輸出 d
console.log(array1);    // 輸出 [ "a", "b", "c" ]

查看示例程序

4.3.2 shift-頭部刪除

Array.prototype.shift() 從頭部刪除一個元素溶握,并返回該元素。

var array1 = [1, 2, 3];
console.log(array1.shift());    // 輸出 1
console.log(array1);    // 輸出 [ 2, 3 ]

查看示例程序

4.4 替換元素

4.4.1 splice-添加替換刪除

Array.prototype.splice() 添加蒸播、替換、刪除元素萍肆。會改變原數(shù)組袍榆。

var array1 = [ 'a', 'c', 'd' ];
array1.splice( 1, 0, 'b');
console.log(array1);    // 輸出 [ "a", "b", "c", "d" ]
array1.splice(1,1);
console.log(array1);    // 輸出 [ "a", "c", "d" ]
array1.splice(1,1,'bb','cc');
console.log(array1);    // 輸出 [ "a", "bb", "cc", "d" ]

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

  • 參數(shù) start:表示替換的位置
  • 參數(shù) deleteCount :表示刪除元素的數(shù)量
  • 參數(shù) item1... : 表示添加的元素

查看示例程序

4.5 順序相關(guān)

4.5.1 sort-排序

Array.prototype.sort() 數(shù)組排序,改變原數(shù)組塘揣。

var array1 = [ 4, 3, 10, 2 ];
console.log(array1.sort());    // 輸出 [ 10, 2, 3, 4 ]
console.log(array1.sort((x1, x2) => x1 > x2));    // 輸出 [ 2, 3, 4, 10 ]

查看示例程序

4.5.2 reverse-反序

Array.prototype.reverse() 倒置數(shù)組包雀,并返回新數(shù)組。會改變原數(shù)組亲铡。

var sourceArray= [ 'a', 'b', 'c' ];
var reverseArray = sourceArray.reverse();
console.log(reverseArray);    // 輸出 [ "c", "b", "a" ]
console.log(sourceArray == reverseArray);    // 輸出 true

查看示例程序

4.6 遍歷迭代

4.6.1 keys-鍵迭代器

Array.prototype.keys() 數(shù)組的鍵迭代器才写。

var array1 = ['a', 'b', 'c'];
for (let key of array1.keys()) {
  console.log(key);     // 輸出 0, 1, 2
}

查看示例程序

4.6.2 values-值迭代器

Array.prototype.values() 數(shù)組的值迭代器。

const array1 = ['a', 'b', 'c'];
const iterator = array1.values();
for (const value of iterator) {
  console.log(value);     // 輸出 a b c
}

查看示例程序

4.6.3 entries-鍵/值對迭代器

Array.prototype.entries() 數(shù)組的鍵/值對迭代器奖蔓。

var array1 = ['a', 'b', 'c'];
var iterator1 = array1.entries();
console.log(iterator1.next().value);    // 輸出 Array [0, "a"]
console.log(iterator1.next().value);    // 輸出 Array [ 1, "b" ] 

查看示例程序

4.6.4 forEach-遍歷

Array.prototype.forEach() 遍歷數(shù)組中的元素赞草,并執(zhí)行回調(diào)函數(shù)。

var arr = [1, 2, 3, 4];
arr.forEach(function (x) {
    console.log(x + 1);    // 輸出 2  3  4  5
});    

查看示例程序

4.7 檢測

4.7.1 includes-值包含檢測

Array.prototype.includes() 值包含檢測吆鹤,如包含返回 true厨疙,不包含返回false。

var array1 = [1, 2, 3];
console.log(array1.includes(2));    // 輸出 true
console.log(array1.includes(4));    // 輸出 false

查看示例程序

4.7.2 some-函數(shù)包含檢測

Array.prototype.some() 檢測數(shù)組中是否有元素可以通過檢測函數(shù)驗證疑务。

var array1 = [ 1, 2, 3, 4 ];
console.log(array1.some(x => x >3));    // 輸出  true
console.log(array1.some(x => x > 5));    // 輸出  false

查看示例程序

4.7.3 every-函數(shù)完全檢測

Array.prototype.every() 檢測數(shù)組中是否所有元素都可以通過檢測函數(shù)驗證沾凄。

var array1 = [ 1, 2, 3, 4, 5 ];
console.log(array1.every(x => x < 8));    //輸出 true
console.log(array1.every(x => x < 4));    //輸出 false

查看示例程序

4.8 合并

4.8.1 join-合并成字符串

Array.prototype.join() 合并數(shù)組中所有元素成為字符串并返回。

var array1= [ 'a', 'b', 'c' ];
console.log(array1.join());    // 輸出 a,b,c
console.log(array1.join("-"));   // 輸出 a-b-c

查看示例程序

4.8.2 concat-合并成數(shù)組

Array.prototype.concat() 合并兩個或多個數(shù)組知允,返回一個全新數(shù)組撒蟀,原數(shù)組不變。

var array1 = [ 'a', 'b' ];
var array2 = [ 'c', 'd' ];
console.log(array1.concat(array2));    // 輸出 [ "a", "b", "c", "d" ]

該方法可以有多個參數(shù)温鸽。

查看示例程序

4.9 累計

4.9.1 reduce-左側(cè)累計

Array.prototype.reduce() 從左至右按 reducer 函數(shù)組合元素值保屯,并返回累計器終值。

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));    // 輸出 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));    // 輸出 15嗤朴,其中5是累計器初始值配椭。

查看示例程序

4.9.2 reduceRight-右側(cè)累計

Array.prototype.reduceRight() 從右至左按 reducer 函數(shù)組合元素值,并返回累計器終值雹姊。

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator.concat(currentValue);
console.log(array1.reduceRight(reducer));    // 輸出 [ 4, 3, 2, 1 ]
console.log(array1.reduceRight(reducer, 5));    // 輸出 [ 5, 4, 3, 2, 1 ]

查看示例程序

4.10 copyWithin-內(nèi)部復制

Array.prototype.copyWithin() 數(shù)組內(nèi)部復制股缸,不改變原數(shù)組長度。

var array1 = ['a', 'b', 'c', 'd', 'e','f'];
console.log(array1.copyWithin(0, 3, 5));    // 輸出 [ "d", "e", "c", "d", "e", "f" ]
console.log(array1.copyWithin(1, 3));    // 輸出 [ "d", "d", "e", "f", "e", "f" ]

arr.copyWithin(target[, start[, end]])

  • 參數(shù)target : 表示要復制到的索引位置吱雏,如為負值則從后向前計數(shù)敦姻。
  • 參數(shù)start : 表示要復制序列的起始索引位置瘾境,如為負值則從后向前計數(shù)。如省略該值镰惦,則從索引0開始迷守。
  • 參數(shù)end : 表示要復制序列的結(jié)束位置,如為負值則從后向前計數(shù)旺入。如省略該值兑凿,則復制到結(jié)尾位置。

查看示例程序

4.11 fill-填充函數(shù)

Array.prototype.fill() 用固定值填充起始索引到終止索引區(qū)間內(nèi)的全部元素值茵瘾,不包括終止索引礼华。

var array1 = [1, 2, 3, 4];
console.log(array1.fill(9, 2, 4));    // 輸出 [ 1, 2, 9, 9 ]
console.log(array1.fill(8, 1));      // 輸出 [ 1, 8, 8, 8 ]
console.log(array1.fill(7));          // 輸出 [ 7, 7, 7, 7 ]

查看示例程序

4.12 filter-過濾函數(shù)

Array.prototype.filter() 生成由通過檢測函數(shù)驗證元素組成的新數(shù)組并返回。

var arr = [ 9 , 8 , 7 , 6];
console.log(arr.filter(x => x >7));    //輸出 [ 9, 8 ]

查看示例程序

4.13 flat-數(shù)組扁平化

Array.prototype.flat() 按指定深度遞歸遍歷數(shù)組拗秘,并返回包含所有遍歷到的元素組成的新數(shù)組圣絮。不改變原數(shù)組。

var arr1 = [ 1, 2, [ 3, 4 ] ];
console.log(arr1.flat());     // 輸出 [ 1, 2, 3, 4 ]
var arr2 = [ 1, 2, [3, 4, [ 5, 6 ] ] ];
console.log(arr2.flat());    // 輸出 [ 1, 2, 3, 4,  [ 5, 6 ] ]
var arr3 = [1, 2, [ 3, 4, [ 5, 6 ] ] ];
console.log(arr3.flat(2));    // 輸出 [ 1, 2, 3, 4, 5, 6 ]

查看示例程序

4.14 map-映射

Array.prototype.map() 創(chuàng)建一個新數(shù)組雕旨,該數(shù)組中的元素由原數(shù)組元素調(diào)用map函數(shù)產(chǎn)生扮匠。

var array1 = [1, 2, 3, 4];
console.log(array1.map(x => x * 2));    // 輸出 [ 2, 4, 6, 8 ]

查看示例程序

4.15 slice-截取數(shù)組

Array.prototype.slice() 按參數(shù)beginend 截取數(shù)組,不改變原數(shù)組凡涩。

var array1 = [ 1, 2, 3, 4, 5];
console.log(array1.slice( 2, 4 ));    //輸出 [ 3, 4 ]
console.log(array1);    //輸出 [ 1, 2, 3, 4, 5 ]

查看示例程序

5 結(jié)尾

5.1 結(jié)語

文中介紹的過于簡單棒搜,想更多理解相關(guān)內(nèi)容還是要多多動手實踐!

因時間不足突照,能力有限等原因帮非,存在文字闡述不準及代碼測試不足等諸多問題。如發(fā)現(xiàn)錯誤請不吝指正讹蘑!謝謝末盔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市座慰,隨后出現(xiàn)的幾起案子陨舱,更是在濱河造成了極大的恐慌,老刑警劉巖版仔,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件游盲,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛮粮,警方通過查閱死者的電腦和手機益缎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來然想,“玉大人莺奔,你說我怎么就攤上這事”湫梗” “怎么了令哟?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵恼琼,是天一觀的道長。 經(jīng)常有香客問我屏富,道長晴竞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任狠半,我火速辦了婚禮噩死,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘神年。我一直安慰自己甜滨,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布瘤袖。 她就那樣靜靜地躺著,像睡著了一般昂验。 火紅的嫁衣襯著肌膚如雪捂敌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天既琴,我揣著相機與錄音占婉,去河邊找鬼。 笑死甫恩,一個胖子當著我的面吹牛逆济,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播磺箕,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼奖慌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了松靡?” 一聲冷哼從身側(cè)響起简僧,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雕欺,沒想到半個月后岛马,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡屠列,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年啦逆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笛洛。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡夏志,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撞蜂,到底是詐尸還是另有隱情盲镶,我是刑警寧澤侥袜,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站溉贿,受9級特大地震影響枫吧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宇色,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一九杂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宣蠕,春花似錦例隆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至皿曲,卻和暖如春唱逢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屋休。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工坞古, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劫樟。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓痪枫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叠艳。 傳聞我的和親對象是個殘疾皇子奶陈,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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