javascript
JavaScript数组你都掰扯不明白,简历上你敢写精通JavaScript?
目錄
- 一、如何判斷一個(gè)對(duì)象是不是數(shù)組?
- 二、填充方法fill()
- 1、ES6新增了兩個(gè)方法
- 2、fill()
- 三、復(fù)制方法```copyWithin()```
- 四、棧方法
- 五、隊(duì)列方法
- 六、排序方法
- 七、操作方法
- 八、搜索和位置方法
- 1、嚴(yán)格相當(dāng)搜索
- 2、斷言函數(shù)
- 九、迭代方法
- 1、every()和some()
- 2、filter()
- 3、map()
- 4、foreach()
- 十、歸并方法reduce()
- ```為什么80%的碼農(nóng)做不了架構(gòu)師?>>>```
- [Java專欄目錄 | 點(diǎn)擊這里](https://blog.csdn.net/guorui_java/article/details/120098618)
- 十一、關(guān)注公眾號(hào)哪吒編程,回復(fù)1024,獲取Java學(xué)習(xí)資料,還有不定期的送書活動(dòng)
一、如何判斷一個(gè)對(duì)象是不是數(shù)組?
在只有一個(gè)全局作用域的時(shí)候,使用instanceof操作符就足矣:
if(value instanceof Array){//操作數(shù)組 }使用instanceof的前提是只有一個(gè)全局執(zhí)行上下文,如果網(wǎng)頁(yè)里有多個(gè)框架,則可能涉及兩個(gè)不同的全局上下文,因此就會(huì)有兩個(gè)不同版本的Array構(gòu)造函數(shù)。如果要把數(shù)組從一個(gè)框架傳到另一個(gè)框架,則這個(gè)數(shù)組的構(gòu)造函數(shù)將有別于第二個(gè)框架內(nèi)本地創(chuàng)建的數(shù)組。
為了解決這個(gè)問題,ECMAScript提供了 Array.isArray()方法。這個(gè)方法的目的就是確定一個(gè)值是否為數(shù)組,而不用管它是在哪個(gè)全局執(zhí)行上下文中創(chuàng)建的。
二、填充方法fill()
1、ES6新增了兩個(gè)方法
批量復(fù)制方法copyWithin(),以及填充數(shù)組方法fill()。
這兩個(gè)方法的函數(shù)比較類似,都需要指定既有數(shù)組實(shí)例上的一個(gè)范圍,包含開始索引,不包含結(jié)束索引,使用這個(gè)方法不會(huì)改變數(shù)組的大小。
2、fill()
使用fill()方法可以向一個(gè)已有的數(shù)組中插入全部或部分相同的值。開始索引用于指定開始填充的位置,它是可選的。如果不提供結(jié)束索引,則一直填充到數(shù)組末尾。負(fù)值索引從數(shù)組末尾開始計(jì)算。
例如:
(1)用1填充整個(gè)數(shù)組
const arr = [0,0,0,0,0]
arr.fill(1);//[1,1,1,1,1]
arr.fill(0);//[0,0,0,0,0]//重置為0
(2)用2填充索引大于等于2的元素
arr.fill(2,2);//[0,0,2,2,2]
arr.fill(0);//[0,0,0,0,0]//重置為0
(3)使用3填充索引大于等于1且小于3的元素
arr.fill(2,1,3);//[0,3,3,0,0]
(4)用4填充索引大于等于1且小于4的元素
arr.fill(4,-4,-1);//[0,4,4,4,0]
注意:fill()會(huì)自動(dòng)忽略超出數(shù)組邊界、零長(zhǎng)度及方向相反的索引范圍。
三、復(fù)制方法copyWithin()
copyWithin()會(huì)按照指定范圍淺復(fù)制數(shù)組中的部分內(nèi)容,然后將他們插入到指定索引開始的位置。
例如:
let arr,reset = () => arr = [0,1,2,3,4,5,6,7,8,9]; reset();(1)從arr中復(fù)制索引5開始的內(nèi)容,插入到索引0開始的位置
arr.copyWithin(0,5);//[5,6,7,8,9,5,6,7,8,9]
reset();
//從arr中復(fù)制索引0開始到索引3結(jié)束的內(nèi)容,插入到索引4開始的地方
arr.copyWithin(4,0,3);//[0,1,2,3,0,1,2,7,8,9]
四、棧方法
ECMAScript給數(shù)組提供了相當(dāng)于棧操作的方法。
棧是一種后進(jìn)先出(LIFO,Last-In-First-Out)的結(jié)構(gòu),也就是最近添加的元素先被刪除。
插入push();
刪除pop();
五、隊(duì)列方法
隊(duì)列以先進(jìn)先出(FIFO,First-In-First-Out)形式的結(jié)構(gòu)。
插入push();
取出shift();
六、排序方法
數(shù)組有兩個(gè)方法可以用來對(duì)元素進(jìn)行重排序:
七、操作方法
1、合并concat()
2、切割slice()
slice()用于創(chuàng)建一個(gè)包含原有數(shù)組中一個(gè)或多個(gè)元素的新數(shù)組。
八、搜索和位置方法
ECMAScript提供兩類搜索數(shù)組的方法,按嚴(yán)格相等搜索和按斷言函數(shù)搜索。
1、嚴(yán)格相當(dāng)搜索
ECMAScript提供了3中嚴(yán)格相等的搜索方法:
2、斷言函數(shù)
九、迭代方法
1、every()和some()
every()對(duì)數(shù)組每一項(xiàng)都進(jìn)行傳入的函數(shù),如果對(duì)每一項(xiàng)函數(shù)都返回true,則這個(gè)方法返回true。
some()對(duì)數(shù)組每一項(xiàng)都運(yùn)行傳入的函數(shù),如果有一項(xiàng)返函數(shù)返回true,則就返回true。
例如:
2、filter()
filter()是基于給定的函數(shù)來決定某一項(xiàng)是否應(yīng)該包含在它返回的數(shù)組中。
比如,要返回一個(gè)所有元素都大于2的數(shù)組:
let ret = nums.filter((item,index,array) => item>2);//[3,4,5,4,3]
3、map()
map()返回一個(gè)數(shù)組,這個(gè)數(shù)組的每一項(xiàng)都是原始數(shù)組中同樣位置的元素進(jìn)行傳入函數(shù)而返回的結(jié)果。
例如,對(duì)數(shù)組中的所有元素都乘以2:
let ret = nums.map((item,index ,array) => item * 2);//[2,4,6,8,10,8,6,4,2]
4、foreach()
foreach()只會(huì)對(duì)每一項(xiàng)運(yùn)行傳入的函數(shù),沒有返回值。本質(zhì)上foreach()就相當(dāng)于for循環(huán)遍歷數(shù)組。
nums.foreach((item,index,array) => {//執(zhí)行某些操作 });十、歸并方法reduce()
reduce()對(duì)每一項(xiàng)都會(huì)運(yùn)行的歸并函數(shù)。
reduce()函數(shù)有四個(gè)參數(shù):
這個(gè)函數(shù)返回的任何值都會(huì)作為下一次調(diào)用同一函數(shù)的第一個(gè)參數(shù)。如果沒有傳入可選的第二個(gè)參數(shù)(作為歸并起始點(diǎn)),則第一次迭代將從數(shù)組的第二項(xiàng)開始,因此傳遞歸并函數(shù)的第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)是數(shù)組的第二項(xiàng)。
可以使用reduce()對(duì)數(shù)組中所有值進(jìn)行求和操作。
為什么80%的碼農(nóng)做不了架構(gòu)師?>>>
Java專欄目錄 | 點(diǎn)擊這里
十一、關(guān)注公眾號(hào)哪吒編程,回復(fù)1024,獲取Java學(xué)習(xí)資料,還有不定期的送書活動(dòng)
🍅 作者簡(jiǎn)介:哪吒,CSDN2021博客之星亞軍🏆、新星計(jì)劃導(dǎo)師?、博客專家💪
🍅 哪吒多年工作總結(jié):Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師
🍅 關(guān)注公眾號(hào)【哪吒編程】,回復(fù)1024,獲取Java學(xué)習(xí)路線思維導(dǎo)圖、大廠面試真題、加入萬粉計(jì)劃交流群、一起學(xué)習(xí)進(jìn)步
下一篇:JavaScript看這一篇就夠了,簡(jiǎn)單全面一發(fā)入魂
總結(jié)
以上是生活随笔為你收集整理的JavaScript数组你都掰扯不明白,简历上你敢写精通JavaScript?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写高效的PyTorch代码技巧(上)
- 下一篇: Linux下的编辑器整理