js--常用的Array數(shù)組方法

  • 關(guān)于數(shù)組長度:

  • 如果為一個數(shù)組元素賦值牡属,它的索引 i 大于或等于現(xiàn)有數(shù)組的長度時钮孵,length的值會自動設(shè)置為 i+1

  • 設(shè)置length為一個小于當前長度的非負整數(shù) n 時,那些索引值大于或等于 n 的元素將從中刪除

  • 添加數(shù)組元素:

  • push():在末尾添加盼樟,length+1

  • a.unshift():在頭部添加仆嗦,length+1

  • a[a.length]:在末尾添加弃锐,length+1

  • 刪除數(shù)組元素:

  • pop():在末尾刪除遏佣,length-1

  • shift():在頭部刪除白粉,length-1掩缓,并且被刪后面的元素自動往前挪

  • 直接指定length為更小的值雪情,則索引大于等于length的部分被切除,即使后面再將length改回來你辣,也無法找回數(shù)據(jù)巡通,均為undefined

  • splice():可插入,刪除舍哄,替換宴凉,會根據(jù)需要修改length的值,并移動元素到更高或更低的索引處

  • delete:可以刪除某個數(shù)組元素表悬,刪除后用undefined占位弥锄,不會移動其他元素,length不會自動改變

數(shù)組方法:
改變原數(shù)組:
  1. pop()
  2. push()
  3. shift()
  4. unshift():以上蟆沫,都是返回添加或刪除的單個元素
  5. reverse():返回位置逆序數(shù)組籽暇,非大小逆序
  • undefined也會參與逆序占位,并輸出
  1. sort():返回排序后的數(shù)組
  • 默認是按字母表排序
  • 傳入回調(diào)函數(shù)時饭庞,假設(shè)第一個參數(shù)應(yīng)該在前戒悠,就要返回一個大于0的數(shù)值,所以按從小到大排序時:function(a,b){return a-b }
  • undefined會被排在最后舟山,也會占位輸出
  1. splice():返回被刪除的片段
不改變原數(shù)組:
  1. concat():a.concat([4,5])绸狐,返回拼接后的新數(shù)組
  2. slice():參數(shù)start,end,包前不包后累盗,返回被切除的片段寒矿。參數(shù)可以為負,此時實際的索引值為用長度加上該負值以后的值若债,如果start小于end符相,則返回空數(shù)組。
  • 例: 長度為5的數(shù)組拆座,slice(-2,-1)主巍,實際指的是slice(3,4)
  1. filter():【跳過undefined的值,輸出時去除空缺】需要回調(diào)函數(shù)function(value)將每個元素值傳入挪凑,經(jīng)過一系列判斷孕索,如果返回值為true或能轉(zhuǎn)化為true的值,則將其添加到新數(shù)組中躏碳,返回新數(shù)組搞旭。
  • 應(yīng)用:a.filter(function(x){return true})可以去除數(shù)組中的undefined值,但不能去除null菇绵,如果要去除null肄渗,需要再回調(diào)函數(shù)里進一步判斷。
  1. forEach():【不會處理undefined的值】需要回調(diào)函數(shù)function(value元素值,index下標,arr數(shù)組本身)咬最,返回值始終為undefined翎嫡,循環(huán)過程中無法停止
  2. map():【不會處理undefined的值,即不傳入回調(diào)函數(shù)處理永乌,但輸出時保留空缺】需要回調(diào)函數(shù)function(value元素值,index下標,arr數(shù)組本身)}惑申,返回一個新數(shù)組,其中每一個下標的值為原數(shù)組經(jīng)過回調(diào)函數(shù)處理后return的相應(yīng)值翅雏,原來的undefined會在新數(shù)組中繼續(xù)占位圈驼。
  • 應(yīng)用舉例:
  • a = [4, 5, 6, undefined × 1, 99, undefined × 2] a.map(function(x){if(x === undefined){console.log("uuu")}else{return x*x }}) 運行結(jié)果:輸出:[16, 25, 36, undefined × 1, 9801, undefined × 2] 原數(shù)組a的值不變
  • 與forEach比較:
  • a.forEach(function(x){if(x === undefined){console.log("uuu")}else{return x*x }}) 運行結(jié)果:輸出:undefined,數(shù)組a的值也不變
  • 比較結(jié)果:兩者都不會處理undefined望几,forEach不會提前返回绩脆,函數(shù)返回值永遠是Undefined,map永遠返回一個數(shù)組橄抹,數(shù)組中的元素是回調(diào)函數(shù)里面return的值靴迫,原來undefined的值還會在新數(shù)組中原地占位。
  1. reduce():【不會處理undefined的值】需要回調(diào)函數(shù)function callbackfn(previousValue, currentValue, currentIndex, array1)楼誓,每次傳入兩個元素值矢劲,經(jīng)過一系列化簡處理,最終得到一個值慌随,返回芬沉。應(yīng)用舉例:累加
  • 函數(shù)完整參數(shù):array1.reduce(callbackfn[, initialValue])
  1. every():【也不處理undefined的值】有回調(diào),檢查是否每個value都滿足回調(diào)函數(shù)返回true,否則返回false

  2. some():有回調(diào)阁猜,只要有一個value令回調(diào)函數(shù)返回true,則some返回true

  3. find():有回調(diào)丸逸,返回回調(diào)函數(shù)里面第一個返回true的value。

    • function isBigEnough(element) { return element >= 15; } [12, 5, 8, 130, 44].find(isBigEnough); // 130
  4. findIndex():有回調(diào)剃袍,返回回調(diào)函數(shù)里面第一個返回true的value的index

    • function isBigEnough(element) { return element >= 15; } [12, 5, 8, 130, 44].findIndex(isBigEnough); // index of 3rd element in the Array is returned, it will result in '3'
  5. indexOf():按內(nèi)容查找黄刚,返回第一個找到的index,否則返回-1

  • var a = [2, 9, 9]; a.indexOf(2); // 0 a.indexOf(7); // -1
  1. lastIndexOf():反向搜索,其他同上民效。
  2. Array.from():將DOM-list和arguments這樣的類數(shù)組轉(zhuǎn)化為數(shù)組憔维,使其可以使用數(shù)組原型上的方法涛救。
  3. Array.entries() : 返回一個新數(shù)組,里面是多個子數(shù)組业扒,每個子數(shù)組的[0]是原數(shù)組的下標,[1]是原數(shù)組下標對應(yīng)的值.
  • 例如:
    const arr = ['a','b','c'];
    let aaa= arr.entries(); // [[0,'a'],[1,'b'],[2,'c']]

應(yīng)用補充:

  • 利用數(shù)組方法可以實現(xiàn)數(shù)組的深拷貝:
  • var newArr = arr.slice() // 原理:從index=0開始截取直到結(jié)束检吆,返回一個新數(shù)組
  • var newArr = arr.concat() // 原理:數(shù)組拼接,返回新數(shù)組
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末程储,一起剝皮案震驚了整個濱河市蹭沛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌章鲤,老刑警劉巖摊灭,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異败徊,居然都是意外死亡帚呼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門皱蹦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萝挤,“玉大人,你說我怎么就攤上這事根欧×洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵凤粗,是天一觀的道長酥泛。 經(jīng)常有香客問我,道長嫌拣,這世上最難降的妖魔是什么柔袁? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮异逐,結(jié)果婚禮上捶索,老公的妹妹穿的比我還像新娘。我一直安慰自己灰瞻,他們只是感情好腥例,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酝润,像睡著了一般燎竖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上要销,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天构回,我揣著相機與錄音,去河邊找鬼。 笑死纤掸,一個胖子當著我的面吹牛脐供,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播借跪,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼政己,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了垦梆?” 一聲冷哼從身側(cè)響起匹颤,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仅孩,失蹤者是張志新(化名)和其女友劉穎托猩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辽慕,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡京腥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了溅蛉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片公浪。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖船侧,靈堂內(nèi)的尸體忽然破棺而出欠气,到底是詐尸還是另有隱情,我是刑警寧澤镜撩,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布预柒,位于F島的核電站,受9級特大地震影響袁梗,放射性物質(zhì)發(fā)生泄漏宜鸯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一遮怜、第九天 我趴在偏房一處隱蔽的房頂上張望淋袖。 院中可真熱鬧,春花似錦锯梁、人聲如沸即碗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拜姿。三九已至,卻和暖如春冯遂,著一層夾襖步出監(jiān)牢的瞬間蕊肥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留壁却,地道東北人批狱。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像展东,于是被迫代替她去往敵國和親赔硫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

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

  • Javascript有很多數(shù)組的方法盐肃,有的人有W3C的API爪膊,還可以去MDN上去找,但是我覺得API上說的不全砸王,M...
    頑皮的雪狐七七閱讀 4,095評論 0 6
  • 創(chuàng)建數(shù)組 arr.length--- title: js正則表達式categories: javascriptda...
    angelwgh閱讀 1,397評論 0 2
  • 由于最近都在freecodecamp上刷代碼推盛,運用了很多JavaScript數(shù)組的方法,因此做了一份關(guān)于JavaS...
    2bc5f46e925b閱讀 1,982評論 0 16
  • 彼此喜歡谦铃,就在一起耘成;不小心懷孕,就結(jié)婚……在我的人生中驹闰,滿滿的瘪菌,都是意外。 認識你嘹朗,是個意外师妙。 那年秋天,剛剛開學(xué)...
    于小魚歪歪閱讀 133評論 0 0
  • 今天一妹子來店里買牛肉飯屹培。在我備好食材就要烹制的時候默穴,她提出要進廚房看看我怎么做——當然我嚴(委)厲(婉)拒絕了她...
    十一號井閱讀 2,094評論 3 2