成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS 數(shù)組方法學(xué)習(xí)匯總

PAMPANG / 2635人閱讀

摘要:整個(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,5
concat()

這個(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)
  })
); // true
forEach()

這個(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 2
includes() 判斷數(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

相關(guān)文章

  • javascript數(shù)組法學(xué)習(xí)匯總

    摘要:將輸出新數(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(-))...

    zebrayoung 評(píng)論0 收藏0
  • 2017-07-17 前端日?qǐng)?bào)

    摘要:前端日?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....

    caiyongji 評(píng)論0 收藏0
  • Vue + ArcGIS API for JavaScript 構(gòu)建前端GIS應(yīng)用(一)

    摘要:技術(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è)方面積...

    lufficc 評(píng)論0 收藏0
  • 【underscore 源碼解讀】JavaScript 中如何判斷兩個(gè)元素是否 "相同&q

    摘要:最近開(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?最主要的原...

    yhaolpz 評(píng)論0 收藏0
  • 從Timer中學(xué)習(xí)優(yōu)先隊(duì)列的實(shí)現(xiàn)

    摘要:從中學(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...

    anquan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<