摘要:數(shù)組原型提供的方法非常之多,主要分為三種直接修改原數(shù)組原數(shù)組不變,返回新數(shù)組數(shù)組遍歷方法直接修改原數(shù)組的刪除一個(gè)數(shù)組中的最后的一個(gè)元素,并且返回這個(gè)元素添加一個(gè)或者多個(gè)元素到數(shù)組末尾,并且返回?cái)?shù)組新的長(zhǎng)度刪除數(shù)組的第一個(gè)元素,并返回這個(gè)元素
Javascript數(shù)組原型提供的方法非常之多,主要分為三種:
直接修改原數(shù)組
原數(shù)組不變,返回新數(shù)組
數(shù)組遍歷方法
直接修改原數(shù)組的APIpop()
刪除一個(gè)數(shù)組中的最后的一個(gè)元素,并且返回這個(gè)元素
push()
添加一個(gè)或者多個(gè)元素到數(shù)組末尾,并且返回?cái)?shù)組新的長(zhǎng)度
shift()
刪除數(shù)組的第一個(gè)元素,并返回這個(gè)元素
unshift()
在數(shù)組開(kāi)始處插入一些元素,并返回?cái)?shù)組新的長(zhǎng)度
splice()
從數(shù)組中添加/刪除一些元素,然后返回被刪除的元素
reverse()
顛倒數(shù)組中元素的順序
sort()
用于對(duì)數(shù)組的元素進(jìn)行排序
fill() -- ES6新增
將數(shù)組指定區(qū)間內(nèi)的元素替換為某個(gè)值
copyWithin() -- ES6新增
數(shù)組內(nèi)元素之間的替換
contact()
將傳入的數(shù)組或者元素與原數(shù)組合并,組成一個(gè)新的數(shù)組并返回
slice()
連接兩個(gè)或多個(gè)數(shù)組
join()
將數(shù)組中的所有元素連接成一個(gè)字符串
indexOf()
用于查找元素在數(shù)組中第一次出現(xiàn)時(shí)的索引,如果沒(méi)有,則返回-1
lastIndexOf()
用于查找元素在數(shù)組中最后一次出現(xiàn)時(shí)的索引,如果沒(méi)有,則返回-1
includes() -- ES7新增
用來(lái)判斷當(dāng)前數(shù)組是否包含某個(gè)指定的值,如果是,則返回 true,否則返回false
針對(duì)數(shù)組遍歷方法,從
是否影響原數(shù)組
是否可中途跳出
有無(wú)返回值
三個(gè)方面來(lái)討論
forEach()
指定數(shù)組的每項(xiàng)元素都執(zhí)行一次傳入的函數(shù),返回值為undefined
let arr=[1,2,3,4]; arr.forEach(function(value,key,arr){ //值,索引,數(shù)組(默認(rèn)為選定數(shù)組) return item; //進(jìn)行任何操作 }) //只返回undefined
無(wú)return 返回 undefined;
有return:
僅有return:返回undefined;
return false:返回undefined;
return true:返回undefined;
簡(jiǎn)言之,僅返回undefined;
總結(jié):
不會(huì)影響原數(shù)組
不會(huì)被中斷
僅返回undefined
map()
遍歷數(shù)組,使用傳入函數(shù)處理每個(gè)元素,并返回函數(shù)的返回值組成的新數(shù)組
無(wú)return 返回由 undefined組成的數(shù)組,數(shù)組個(gè)數(shù)與原數(shù)組個(gè)數(shù)相同;
有return
return 表達(dá)式,返回有響應(yīng)表達(dá)式 組成的數(shù)組
簡(jiǎn)言之,返回值,必定是一個(gè)與原數(shù)組個(gè)數(shù)相等的數(shù)組;但是數(shù)組中的值,根據(jù)所做的處理有所不同;
總結(jié):
不會(huì)影響原數(shù)組
不能被中斷
返回值,必定是一個(gè)與原數(shù)組個(gè)數(shù)相等的數(shù)組;但是數(shù)組中的值,根據(jù)所做的處理有所不同
filter()
使用傳入的函數(shù)測(cè)試所有元素,并返回所有通過(guò)測(cè)試的元素組成的新數(shù)組
沒(méi)有return,返回值為空數(shù)組;
有return:
僅有return,返回空數(shù)組;
return false,返回空數(shù)組;
return true,返回原數(shù)組;(是深拷貝還是淺拷貝)
return 其余表達(dá)式,如果有判斷條件,返回相應(yīng)判斷條件構(gòu)成的數(shù)組;沒(méi)有判斷條件,返回原數(shù)組;
簡(jiǎn)言之,返回值,要么為空數(shù)組,要么為原數(shù)組,要么為原數(shù)組部分元素組成的數(shù)組;
總結(jié):
不會(huì)影響原數(shù)組
不能被中斷
返回值,要么為空數(shù)組,要么為原數(shù)組,要么為原數(shù)組部分元素組成的數(shù)組
every()
使用傳入的函數(shù)測(cè)試所有元素,每一個(gè)元素經(jīng)傳入的函數(shù)處理都返回true該方法才返回true,否則返回false(驗(yàn)證是否每一個(gè)元素都滿足測(cè)試函數(shù))
驗(yàn)證是否有元素都滿足測(cè)試函數(shù),eg: return (element >= 10)
無(wú)return:返回false;
有return:
僅有return :返回false;
return false:返回false;
return true:返回true;
簡(jiǎn)言之,只返回 true 或者 false
總結(jié):
不會(huì)影響原數(shù)組
不能被中斷
只返回true 或者 false
some()
使用傳入的函數(shù)測(cè)試所有元素,只要有一個(gè)元素經(jīng)傳入的函數(shù)處理返回true該方法就返回true,否則返回false(驗(yàn)證是否有元素都滿足測(cè)試函數(shù))
無(wú)return,返回 false
有return:
僅有return,返回false;
return false,返回false;
return true,返回 true;并且后續(xù)被中斷
簡(jiǎn)言之,僅返回true、或者false
總結(jié):
不會(huì)影響原數(shù)組
return true,可以被中斷
僅返回true、或者false
find() -- ES6新增
返回?cái)?shù)組中第一個(gè)滿足條件的元素(如果有的話), 如果沒(méi)有,則返回 undefined
無(wú)return:返回undefined
有return:
僅有return:返回undefined;
return false:返回undefined;
return true:返回相應(yīng)的索引值,并且中斷
總結(jié):
不會(huì)影響原數(shù)組
return true 中斷循環(huán)
返回 undefined 或者 相應(yīng)索引值
findIndex() -- ES6新增
返回?cái)?shù)組中第一個(gè)滿足條件的元素的索引(如果有的話), 如果沒(méi)有,則返回 -1
keys() -- ES6新增
返回一個(gè)數(shù)組索引的迭代器
values() -- ES6新增
返回一個(gè)數(shù)組迭代器對(duì)象,該對(duì)象包含數(shù)組中每個(gè)索引的值
entries() -- ES6新增
返回一個(gè)數(shù)組迭代器對(duì)象,該對(duì)象包含數(shù)組中每個(gè)索引的鍵值對(duì)
reduce()
接收一個(gè)方法作為累加器,數(shù)組中的每個(gè)值(從左至右) 開(kāi)始合并,最終為一個(gè)值
reduceRight()
接收一個(gè)方法作為累加器,數(shù)組中的每個(gè)值(從右至左) 開(kāi)始合并,最終為一個(gè)值
最終總結(jié)下,對(duì)于數(shù)組遍歷方法,forEach map filter every some find,六個(gè)方法,都不會(huì)改變?cè)瓟?shù)組,只有some find 可中途跳出循環(huán),返回結(jié)果看上述分析;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/102110.html
摘要:系統(tǒng),扎實(shí)的語(yǔ)言基礎(chǔ)是一個(gè)優(yōu)秀的前端工程師必須具備的。第一個(gè)參數(shù)為調(diào)用函數(shù)時(shí)的指向,隨后的參數(shù)則作為函數(shù)的參數(shù)并調(diào)用,也就是。和的區(qū)別只有一個(gè),就是它只有兩個(gè)參數(shù),而且第二個(gè)參數(shù)為調(diào)用函數(shù)時(shí)的參數(shù)構(gòu)成的數(shù)組。 系統(tǒng),扎實(shí)的 javascript 語(yǔ)言基礎(chǔ)是一個(gè)優(yōu)秀的前端工程師必須具備的。在看了一些關(guān)于 call,apply,bind 的文章后,我還是打算寫(xiě)下這篇總結(jié),原因其實(shí)有好幾個(gè)。...
摘要:原文發(fā)布在數(shù)組應(yīng)該是日常開(kāi)發(fā)中最常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)了,雖然常見(jiàn),但是卻不一定能優(yōu)雅地處理好,中數(shù)組的處理方法很多,各個(gè)方法的參數(shù)返回值是否修改原數(shù)組等也容易記混。 原文發(fā)布在:http://blog.xiaofeixu.cn/2017... 數(shù)組應(yīng)該是日常開(kāi)發(fā)中最常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)了,雖然常見(jiàn),但是卻不一定能優(yōu)雅地處理好,JavaScript中數(shù)組的處理方法很多,各個(gè)方法的參數(shù)、返回值、是否修...
摘要:專題系列第三篇,講解各種數(shù)組去重方法,并且跟著寫(xiě)一個(gè)前言數(shù)組去重方法老生常談,既然是常談,我也來(lái)談?wù)?。它類似于?shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。 JavaScript 專題系列第三篇,講解各種數(shù)組去重方法,并且跟著 underscore 寫(xiě)一個(gè) unique API 前言 數(shù)組去重方法老生常談,既然是常談,我也來(lái)談?wù)劇?雙層循環(huán) 也許我們首先想到的是使用 indexOf 來(lái)循...
摘要:而數(shù)組元素去重是基于運(yùn)算符的。而如果有迭代函數(shù),則計(jì)算傳入迭代函數(shù)后的值,對(duì)值去重,調(diào)用方法,而該方法的核心就是調(diào)用方法,和我們上面說(shuō)的方法一異曲同工。 Why underscore (覺(jué)得這部分眼熟的可以直接跳到下一段了...) 最近開(kāi)始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計(jì)劃中。 閱讀一些著名框架類庫(kù)的源碼,就好像...
摘要:等內(nèi)置的方法和屬性都是不可枚舉的北京北京可以遍歷可枚舉但對(duì)象,包括不是它本身但存在于原型鏈上的屬性。北京循環(huán)可迭代對(duì)象循環(huán)可迭代對(duì)象包括,,,,,類數(shù)組的對(duì)象比如對(duì)象對(duì)象以及生成器對(duì)象等。 在JavaScript中,我們經(jīng)常需要去循環(huán)迭代方法操作數(shù)組對(duì)象等,常見(jiàn)等循環(huán)方法有 for、for in、for of、forEach等。 1.for循環(huán) for循環(huán)是最基礎(chǔ)常見(jiàn)的一種循環(huán),圓括號(hào)...
閱讀 3951·2021-07-28 18:10
閱讀 2643·2019-08-30 15:44
閱讀 1162·2019-08-30 14:07
閱讀 3516·2019-08-29 17:20
閱讀 1642·2019-08-26 18:35
閱讀 3596·2019-08-26 13:42
閱讀 1870·2019-08-26 11:58
閱讀 1663·2019-08-23 18:33