摘要:整個(gè)數(shù)組的大操作轉(zhuǎn)換拼接排序倒置這個(gè)方法是將數(shù)組轉(zhuǎn)換為字符串,數(shù)組元素間用傳進(jìn)去的參數(shù)沒(méi)有參數(shù)就用分隔這個(gè)方法用于拼接兩個(gè)數(shù)組并返回一個(gè)新的數(shù)組??创a吧打印整個(gè)數(shù)組這個(gè)方法是對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù),返回每一項(xiàng)返回結(jié)果組成的數(shù)組。
前言 在 JS 中我們數(shù)組用的是比較多的了,它自帶了很多方法可以用,省去了我們時(shí)間,特別是 ES6 當(dāng)中對(duì)數(shù)組的擴(kuò)展讓數(shù)組具有了更強(qiáng)大的功能,為了以后使用數(shù)組的時(shí)候能夠充分發(fā)揮數(shù)組的特性,在這里對(duì)數(shù)組的方法進(jìn)行一次匯總吧。
說(shuō)明 標(biāo)題后的標(biāo)識(shí) * 是說(shuō)明該方法會(huì)改變?cè)瓟?shù)組
對(duì)數(shù)組元素的操作 push() & pop() *push() 向數(shù)組的末尾添加一個(gè)或更多元素(就是傳進(jìn)去的參數(shù)),并返回新的長(zhǎng)度。
pop() 刪除并返回?cái)?shù)組的最后一個(gè)元素。
具體效果看代碼
let arr = [1,2,3]; let res1 = arr.push(5); console.log(res1); // 4 arr的長(zhǎng)度 console.log(arr); // [1,2,3,5] let res2 = arr.pop(); console.log(res2); // 5 移除的數(shù)組項(xiàng) console.log(arr); // [1,2,3]shift() & unshift() *
shift() 刪除并返回?cái)?shù)組的第一個(gè)元素
unshift() 向數(shù)組的頭部添加一個(gè)或者多個(gè)元素(傳入的參數(shù)),并返回新的長(zhǎng)度。
具體效果看代碼
let arr = [1,2,3]; let res1 = arr.shift(); console.log(res1); // 1 移除的數(shù)組項(xiàng) console.log(arr); // [2,3] let res2 = arr.unshift(5,7); console.log(res2); // 4 數(shù)組新長(zhǎng)度 console.log(arr); // [5,7,2,3]slice()
這個(gè)方法是從某個(gè)已有的數(shù)組返回選定的元素。一般帶兩參數(shù) par1 和 par2,方法返回原數(shù)組 [par1, par2) 區(qū)間內(nèi)的值組成的新數(shù)組。如果只有一個(gè)參數(shù) par1 的話,就返回原數(shù)組 [par1,數(shù)組尾] 區(qū)間內(nèi)的值組成的新數(shù)組。
具體看代碼
let arr = [1,2,3]; console.log(arr.slice(1,2)); // [2] console.log(arr.slice(1)); // [2,3] console.log(arr); // [1,2,3]splice() *
這個(gè)方法有點(diǎn)復(fù)雜了,他是從原數(shù)組中刪除/添加項(xiàng)目,并返回刪除的項(xiàng)目。具體是刪除還是添加,看參數(shù)決定,它至少需要兩個(gè)參數(shù) index,deleteCount,分別指代要開(kāi)始刪除/添加項(xiàng)目的下標(biāo) index 和要?jiǎng)h除的項(xiàng)目的個(gè)數(shù) deleteCount,后面如果其他參數(shù)通通就是要加入 index 位置后面的項(xiàng)目了??创a就知道一切了。
let arr = [0,1,2,3,4]; // 刪除操做 console.log(arr.splice(0,2)); // [0,1] 從 下標(biāo) 0 的位置開(kāi)始刪除兩個(gè)元素,并返回。 console.log(arr); // [2,3,4] 刪除后就剩它仨了 // 添加操作 console.log(arr.splice(1, 0, 5, 6, 7)); // [] 第二個(gè)參數(shù) 0 ,那就沒(méi)有刪除啥元素咯,然后在下標(biāo) 1 的位置開(kāi)始插入 console.log(arr); // [2, 5, 6, 7, 3, 4] // 替換操作 console.log(arr.splice(1,1,2)); // [5] console.log(arr); // [2, 2, 6, 7, 3, 4 ]
這個(gè)方法是很強(qiáng)大的,可以用它來(lái)實(shí)現(xiàn)數(shù)組元素的刪除,替換,添加的操作,看上面代碼就知道啦。
整個(gè)數(shù)組的大操作(轉(zhuǎn)換&拼接&排序&倒置) join()這個(gè)方法是將數(shù)組轉(zhuǎn)換為字符串,數(shù)組元素間用傳進(jìn)去的參數(shù)( 沒(méi)有參數(shù)就用,) 分隔
let arr = [1,2,3,4,5]; console.log(arr.join("|")); // 1|2|3|4|5 console.log(arr.join()); // 1,2,3,4,5concat()
這個(gè)方法用于拼接兩個(gè)數(shù)組并返回一個(gè)新的數(shù)組。
let arr = [1,2,3,4,5]; console.log(arr.concat([6,7,8])); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]sort() *
這個(gè)就不用講了吧,排序,不過(guò)默認(rèn)的排序方法是把數(shù)字當(dāng)成字符串來(lái)排序的,所以就會(huì)有了下面代碼中的問(wèn)題,也有了我們關(guān)于排序的重寫(xiě)。
let arr = [1,22,13,4,5]; arr.sort(); console.log(arr) // [ 1, 13, 22, 4, 5 ] 因?yàn)?22 的第一個(gè)字符是 2 比 4 小,所以 22 比 4 小。。。 arr.sort(function(val1,val2){ return val1-val2; }) console.log(arr); // [ 1, 13, 22, 4, 5 ]reverse() *
如其名,倒置數(shù)組的元素。
let arr = [1,22,13,4,5]; arr.reverse(); console.log(arr) // [ 5, 4, 13, 22, 1 ]toString() & toLocaleString() & valueOf()
這三個(gè)方法,是個(gè)對(duì)象就會(huì)有,數(shù)組對(duì)象也不例外,也順便寫(xiě)出來(lái)看看吧,具體啥效果,看代碼吧。
let arr = [1,22,13,4,5]; console.log(arr.toString()); // 1,22,13,4,5 console.log(arr.toLocaleString()); // 1,22,13,4,5 console.log(arr.valueOf()); // [ 1, 22, 13, 4, 5 ]數(shù)組位置方法 indexOf() & lastIndexOf()
這個(gè)用于查找數(shù)組中的元素,找到后返回元素的下標(biāo),找不到的話就返回 -1。兩個(gè)方法都是一樣的,只不過(guò)一個(gè)從頭到尾找,一個(gè)從尾到頭找
let arr = [1,22,13,4,5]; console.log(arr.indexOf(13)); // 2 console.log(arr.lastIndexOf(22)); // 1 console.log(arr.indexOf(44)); // -1迭代方法 every() & some()
every() 對(duì)數(shù)組每一項(xiàng)運(yùn)行一個(gè)函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回 true,則整體返回 true
some() 這個(gè)和上面一樣啦,不過(guò)這個(gè)只要有一項(xiàng)是 true,整體就返回 true
具體看代碼啦
let arr = [1, 2, 3, 4, 5]; console.log( arr.every(function (item, index, array) { return (item > 2) }) ); // false console.log( arr.some(function (item, index, array) { return (item > 2) }) ); // trueforEach()
這個(gè)是對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),沒(méi)有返回值??创a吧
let arr = [1,2,3,4,5] // 打印整個(gè)數(shù)組 arr.forEach(function(item){ console.log(item); });map()
這個(gè)方法是對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù),返回每一項(xiàng)返回結(jié)果組成的數(shù)組。
let arr = [1,2,3,4,5] let newArr = arr.map(function(item){ return item+1 }); console.log(newArr); // [ 2, 3, 4, 5, 6 ]filter()
這個(gè)方法是對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回為 true 的數(shù)組項(xiàng)組成的新數(shù)組。
let arr = [1,2,3,4,5] let newArr = arr.filter(function(item){ return item > 2 }); console.log(newArr); // [ 3, 4, 5 ]ES6 擴(kuò)展的數(shù)組方法 Array.from() 對(duì)象轉(zhuǎn)為數(shù)組
這個(gè)方法用于將兩類對(duì)象轉(zhuǎn)為真正的數(shù)組,分別是類數(shù)組對(duì)象和可遍歷對(duì)象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map)用法就看代碼吧
let arrLike = { "0":"1", "1":"2", "2":"2", length:"3" } let arr = Array.from( arrLike); console.log(arr); // [ "1", "2", "2" ]
在實(shí)際應(yīng)用中,DOM 操作返回的 NodeList 集合就是一個(gè)類數(shù)組對(duì)象。
Array.of() 值轉(zhuǎn)為數(shù)組這個(gè)是用來(lái)替代 Array() 或 new Array()的,為啥要替換,來(lái)段代碼感受下就知道了
console.log(Array()); // [] console.log(Array(3)); // [, , ,] console.log(Array(1, 2, 3)); // [ 1, 2, 3 ] console.log(Array.of()); // [] console.log(Array.of(undefined)); // [undefined] console.log(Array.of(3)); // [3] console.log(Array.of(1, 2, 3)); // [ 1, 2, 3 ]
看出門(mén)道了吧,Array() 會(huì)因?yàn)閰?shù)不同會(huì)有不同的效果,而 Array.of() 就不會(huì)存在這種問(wèn)題啦。
copyWithin() 數(shù)組內(nèi)成員復(fù)制 *這個(gè)方法有點(diǎn)迷,暫時(shí)不知道是用來(lái)干啥的,但是也記一下它能干啥,沒(méi)準(zhǔn)以后就用上了。
它的話是在當(dāng)前數(shù)組內(nèi)部將指定位置的成員復(fù)制到其他位置(覆蓋掉原有成員),然后返回該數(shù)組。他有下面三個(gè)參數(shù)
target(必選):從該位置開(kāi)始替換數(shù)據(jù)
start(可選):從該位置讀取數(shù)據(jù),默認(rèn) 0。如果為負(fù)值,表示倒數(shù)。
end(可選):到該位置前停止讀取數(shù)據(jù),默認(rèn)是數(shù)組長(zhǎng)度,如果為負(fù)值,表示倒數(shù)。
具體有啥效果就看代碼吧
let arr = [1, 2, 3, 6, 5]; // 從下標(biāo) 0 開(kāi)始換 下標(biāo) 1(也就是 2)開(kāi)始的數(shù)據(jù),一直替換到 下標(biāo) 4 前(也就是到 arr[3] 結(jié)束) // 人話說(shuō)就是 arr[0] 到 arr[4-2] 的值被 arr[1] 到 arr[4-1] 的值替換掉 console.log(arr.copyWithin(0, 1, 4)); // [ 2, 3, 6, 6, 5 ] arr2 = [0, 1, 2, 3, 4, 5, 6]; console.log(arr2.copyWithin(1, 3, 6)); // [ 0, 3, 4, 5, 4, 5, 6 ]find() & findIndex() 查找數(shù)組元素
find() 用于查找符合第一個(gè)符合條件的數(shù)組成員,并將其返回。如果沒(méi)有的話,就返回 undefined。
findIndex() 和上面一樣,不過(guò)他返回的是那個(gè)符合條件的數(shù)組的下標(biāo)。
啥效果就看代碼吧
let arr = [0, 1, 2, 3, 5, 5, 6]; arr.find(function (value, index, arr) { return value > 4; }) // 返回?cái)?shù)值 5 arr.findIndex(function (value, index, arr) { return value > 4; }) // 返回下標(biāo) 4
### fill() 數(shù)組填充
這個(gè)方法是用給定值填充一個(gè)數(shù)組。初始化數(shù)組的時(shí)候可以用到。它有三個(gè)參數(shù):
value 填充數(shù)組的值
start 填充的起始位置
end 填充的結(jié)束位置
[1, 2, 3].fill("a") // [ "a", "a", "a" ] [1, 2, 3, 4, 5].fill("a", 2, 4) // [ 1, 2, "a", "a", 5 ]entries() & key() & values() 遍歷數(shù)組
這三個(gè)都會(huì)返回一個(gè)迭代器對(duì)象,可以用 for...of 循環(huán)遍歷,區(qū)別是,entries() 遍歷鍵值對(duì),keys() 遍歷鍵名,values() 遍歷鍵值,啥效果看代碼。
let arr = [1, 2]; for (let [index, ele] of arr.entries()) { console.log(index, ele); } // 0 1 1 2 for (let index of arr.keys()) { console.log(index); } // 0 1 for (let ele of arr.values()) { console.log(ele); } // 1 2includes() 判斷數(shù)組是否有某值
這個(gè)方法如其名,用于判斷數(shù)組內(nèi)是否有某個(gè)值,如果有,返回 true,沒(méi)有,返回 false。他如果有第二個(gè)參數(shù)的話,那么第二個(gè)參數(shù)表示開(kāi)始搜索的位置。
let arr=[1,2,3,4,5,6,7]; arr.includes(1) // true arr.includes(1,5) // false 從下標(biāo) 5 開(kāi)始搜沒(méi)有 1
關(guān)于數(shù)組的的方法,就總結(jié)道這邊了,如果還有遺漏或者錯(cuò)誤的地方的話,就麻煩下下面評(píng)論修正啦。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100201.html
摘要:將輸出新數(shù)組判斷數(shù)組中的每一項(xiàng)是否都滿足條件,都滿足返回,此方法相較于之前的幾個(gè)方法,返回值有差異,是一個(gè)布爾值。輸出數(shù)組用于將一組值轉(zhuǎn)化為數(shù)組輸出數(shù)組返回一個(gè)布爾值,表示某個(gè)數(shù)組中是否包含給定的值。 1、join(sep):將數(shù)組元素組合成字符串。以sep為分隔符,省略的話則默認(rèn)使用逗號(hào)為分隔符。 var arr = [a,b,c]; console.log(arr.join(-))...
摘要:前端日?qǐng)?bào)精選聽(tīng)說(shuō)你沒(méi)來(lái)總結(jié)個(gè)人使用過(guò)的移動(dòng)端布局方法新特性簡(jiǎn)介用寫(xiě)組件坦然面對(duì)應(yīng)對(duì)前端疲勞中文深入理解筆記函數(shù)前端架構(gòu)經(jīng)驗(yàn)分享系列教程之創(chuàng)建頁(yè)面元素龍?jiān)迫珬O盗薪坛讨ㄎ豁?yè)面元素龍?jiān)迫珬5谄谂c表單驗(yàn)證技術(shù)周刊期知乎 2017-07-17 前端日?qǐng)?bào) 精選 聽(tīng)說(shuō)你沒(méi)來(lái) JSConf 2017?總結(jié)個(gè)人使用過(guò)的移動(dòng)端布局方法 - Rni-L - SegmentFaultNode.js v8....
摘要:技術(shù)路線的選擇技術(shù)學(xué)習(xí)內(nèi)容匯總技術(shù)路線的選擇項(xiàng)目的技術(shù)路線是使用構(gòu)建一套前端應(yīng)用,更加具體的技術(shù)路線實(shí)際上是,應(yīng)用到了技術(shù)棧加上了最新版的。不管怎么說(shuō),以這次項(xiàng)目對(duì)的使用體驗(yàn)挺好。本次項(xiàng)目沒(méi)有使用開(kāi)源的要求,自然是最好的選擇。 寫(xiě)這篇總結(jié)的意義:總結(jié),回顧,反思項(xiàng)目進(jìn)行過(guò)程和這套Vue + ArcGIS API for JavaScriptGIS前端應(yīng)用技術(shù)路線,從項(xiàng)目與技術(shù)兩個(gè)方面積...
摘要:最近開(kāi)始看源碼,并將源碼解讀放在了我的計(jì)劃中。后文中均假設(shè)比較的兩個(gè)參數(shù)為和。,如果和均是類型或者類型,我們可以用來(lái)判斷是否。 Why underscore 最近開(kāi)始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計(jì)劃中。 閱讀一些著名框架類庫(kù)的源碼,就好像和一個(gè)個(gè)大師對(duì)話,你會(huì)學(xué)到很多。為什么是 underscore?最主要的原...
摘要:從中學(xué)習(xí)優(yōu)先隊(duì)列的實(shí)現(xiàn)是定時(shí)器的實(shí)現(xiàn),用來(lái)調(diào)度定時(shí)執(zhí)行的任務(wù)和執(zhí)行一次的任務(wù),就像的和的意思,它也可以作為后臺(tái)程序運(yùn)行。通過(guò)和的方法可以保證整個(gè)優(yōu)先隊(duì)列的關(guān)系,保證的是最小的。作用是構(gòu)建堆,可以從的數(shù)組構(gòu)建堆,來(lái)表示優(yōu)先隊(duì)列。 從Timer中學(xué)習(xí)優(yōu)先隊(duì)列的實(shí)現(xiàn) Timer是Java定時(shí)器的實(shí)現(xiàn),用來(lái)調(diào)度定時(shí)執(zhí)行的任務(wù)和執(zhí)行一次的任務(wù),就像JavaScript的setInterval和s...
閱讀 2394·2019-08-30 15:56
閱讀 1051·2019-08-30 15:55
閱讀 3214·2019-08-30 15:44
閱讀 942·2019-08-30 10:53
閱讀 1896·2019-08-29 16:33
閱讀 2500·2019-08-29 16:13
閱讀 728·2019-08-29 12:41
閱讀 884·2019-08-26 13:56