国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重學JS:數(shù)組

enda / 2039人閱讀

摘要:如果沒有提供初始值,則將使用數(shù)組中的第一個元素。如果有錯誤或不嚴謹?shù)牡胤剑瑲g迎批評指正,如果喜歡,歡迎點贊

除了Object類型之外,Array類型恐怕是js中最常用的類型了,并且隨著js的發(fā)展進步,數(shù)組中提供的方法也越來越來,對數(shù)組的處理也出現(xiàn)了各種騷操作,此篇文章將會帶你重新學習數(shù)組中的實例方法

數(shù)組轉(zhuǎn)換

1、join()方法接收一個字符串作為分隔符,并返回用分隔符連接的數(shù)組項字符串

參數(shù):分隔符字符串

const arr = [1, 2, 3]
console.log(arr.join("|")) // "1|2|3"

2、toString()方法返回數(shù)組中每個值的字符串形式拼接而成的一個以逗號分隔的字符串

參數(shù):無

const arr = [1, 2, 3]
console.log(arr.toString()) // "1,2,3"
棧方法

1、push()方法接收任意數(shù)量的參數(shù),把它們逐個添加到數(shù)組末尾,并返回修改后的數(shù)組長度

參數(shù): item...(多個數(shù)組項)

let arr = ["a", "b", "c"]
const count = arr.push("d")
console.log(count) // 4
console.log(arr) // [ "a", "b", "c", "d" ]

2、pop()方法從數(shù)組末尾移除最后一項,減少數(shù)組的length,返回移除的項

參數(shù):無

let arr = ["a", "b", "c"]
const item = arr.pop()
console.log(item) // "c"
console.log(arr) // [ "a", "b" ]
隊列方法

1、shift()方法移除數(shù)組中的第一項,并返回該項,同時數(shù)組長度減1

參數(shù):無

let arr = ["a", "b", "c"]
const item = arr.shift()
console.log(item) // "a"
console.log(arr) // [ "b", "c" ]

2、unshit()方法在數(shù)組前端添加任意個項,并返回新數(shù)組的長度

參數(shù):item...(多個數(shù)組項)

let arr = ["a", "b", "c"]
const count = arr.unshift("d", "e")
console.log(count) // 5
console.log(arr) // [ "d", "e", "a", "b", "c" ]
排序方法

1、reverse()方法用于反轉(zhuǎn)數(shù)組中每一項,并返回反轉(zhuǎn)后的數(shù)組

參數(shù):無

let arr = ["a", "b", "c"]
console.log(arr.reverse()) // [ "c", "b", "a" ]

2、sort()方法用將數(shù)組排序,并返回排序后的數(shù)組

參數(shù):compareFunction(可選)

- 若不傳compareFunction,sort()方法回調(diào)用每個數(shù)組項的toString()方法,然后比較得到的字符串
```js
let arr = [2, 3, 10]
arr.sort()
console.log(arr) // [ 10, 2, 3 ]
```
"10"位于"2"之前
- 若傳compareFunction(a,b),如果返回值小于0,則a位于b之前,如果返回值等于0則位置不變,如果返回值大于,則b位于a之前
```js
let arr = [2, 5, 3, 1]
arr.sort((a, b) => {
  if (a < b) {
    return -1
  } else if (a > b) {
    return 1
  } else {
    return 0
  }
})
console.log(arr) // [ 1, 2, 3, 5 ]
```
操作方法

1、concat()方法創(chuàng)建當前數(shù)組一個副本,然后將接收到的參數(shù)添加到這個副本末尾,最后返回新構(gòu)建的數(shù)組

參數(shù):item...(可以是數(shù)組項,也可以是數(shù)組)

let arr = [1, 2, 3]
let newArr = arr.concat(4, 5, [6, 7])
console.log(newArr) // [ 1, 2, 3, 4, 5, 6, 7 ]

2.slice()方法基于當前數(shù)組中的一或多個項創(chuàng)建一個新數(shù)組

參數(shù): start(起始位置),end(結(jié)束位置,可選)

let arr = [1, 2, 3, 4]
let newArr = arr.slice(1, 3)
console.log(newArr) // [ 2, 3 ]

tip: 如果slice方法的參數(shù)中有一個負數(shù),則用數(shù)組長度加上該數(shù)來確定相應的位置

3、splice()方法用法有多種,根據(jù)不同的用法需要傳遞的參數(shù)也不一樣

刪除:可以刪除任意數(shù)量的項,指定兩個參數(shù):刪除的第一項位置和刪除的數(shù)量

插入:可以向指定位置插入任意數(shù)量的項,第一個參數(shù):插入的位置,第二個參數(shù)0(刪除0),第三個參數(shù)以后要插入的項

替換:可以將指定位置的項替換,第一個參數(shù)要替換項的位置,第二個替換項個數(shù),第三個參數(shù)以后新的項

let arr = [1, 2, 3, 4, 5]
arr.splice(0, 1)
console.log(arr) // [ 2, 3, 4, 5 ]
arr.splice(1, 0, "hello", "world")
console.log(arr) // [ 2, "hello", "world", 3, 4, 5 ]
arr.splice(3, 1, "js")
console.log(arr) // [ 2, "hello", "world", "js", 4, 5 ]
位置方法

1、indexOf()方法從頭開始查找指定項,找到返回對應數(shù)組下標,沒找到返回-1

參數(shù):item(要查找的數(shù)組項),index(指定開始查找的位置,可選)

let arr = [1, 2, 3, 4, 5]
console.log(arr.indexOf(3)) // 2
console.log(arr.indexOf(3, 3)) // -1

2、lastIndexOf()方法用法和indexOf基本一致,只是從數(shù)組尾部開始查找

迭代方法

1、every()方法對數(shù)組中每一項運行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true

參數(shù):callback(item, index, arr)

let arr = [3, 4, 5, 6]
let result = arr.every((item) => item > 2)
console.log(result) // true

2、some()方法對數(shù)組中任意一項運行給定函數(shù),如果該函數(shù)對任意一項返回true,則返回true

參數(shù):callback(item, index, arr)

let arr = [1, 2, 3, 4]
let result = arr.some((item) => item > 3)
console.log(result) // true

3、map()方法對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組

參數(shù):callback(item, index, arr)

let arr = [1, 2, 3]
let result = arr.map(item =>  item * 2)
console.log(result) // [ 2, 4, 6 ]

4、filter()方法對數(shù)組中的每一項運行給定函數(shù),返回該函數(shù)調(diào)用會返回true的項組成的數(shù)組

參數(shù):callback(item, index, arr)

let arr = [1, 2, 3, 4, 5]
let result = arr.filter(item => item > 2)
console.log(result) // [3, 4, 5]

5、forEach()方法對數(shù)組中的每一項都運行給定函數(shù),沒有返回值

參數(shù):callback(item, index, arr)

let arr = [1, 2, 3, 4, 5]
arr.forEach(item => {
  console.log(item) // 1 2 3 4 5
})

tip: 修改item的不會影響遍歷的數(shù)組項

縮小方法

1、reduce()方法對數(shù)組中的每一項執(zhí)行一個reducer函數(shù)(升序執(zhí)行),并將結(jié)果匯總為單個返回值

參數(shù):callback(accumulator(累計器累計回調(diào)的返回值),currentValue(數(shù)組中正在處理的元素),currentIndex(數(shù)組中正在處理的元素的索引,如果提供了initialValue,則起始索引號為0,否則為1,可選),array(調(diào)用reducer的數(shù)組)), initialValue(作為第一次調(diào)用callback函數(shù)時的第一個參數(shù)的值。 如果沒有提供初始值,則將使用數(shù)組中的第一個元素。 在沒有初始值的空數(shù)組上調(diào)用 reduce 將報錯,可選)

let arr = [1, 2, 3, 4, 5]
let result = arr.reduce((accumulator, current, index, array) => {
  return accumulator + current
})
console.log(result) // 15 1+2+3+4+5
let arr = [1, 2, 3, 4, 5]
let result = arr.reduce((accumulator, current, index, array) => {
  return accumulator + current
}, 10)
console.log(result) // 25 10+1+2+3+4+5

2、reduceRight()方法用法與reduce()方法一致,只是redeceRight()方法調(diào)用從數(shù)組尾部開始,向前遍歷

ES6新增方法

1、from()方法將類似數(shù)組的對象和可遍歷的對象轉(zhuǎn)化為數(shù)組

參數(shù):arrayLike(想要轉(zhuǎn)換成數(shù)組的偽數(shù)組對象或可迭代對象),mapFn(如果指定了該參數(shù),新組數(shù)中的每個元素會執(zhí)行此回調(diào)函數(shù),可選),thisArg(執(zhí)行回調(diào)函數(shù)時this對象,可選)

let arrayLike = {
  0: 1,
  1: 2,
  2: 3,
  length: 3
}
console.log(Array.from(arrayLike)) // [1, 2, 3]
let arrayLike = {
  0: 1,
  1: 2,
  2: 3,
  length: 3
}
console.log(Array.from(arrayLike, (item) => item * 2)) // [2, 4, 6]

在實際應用中更多應用于Dom操作返回的集合以及函數(shù)內(nèi)部的arguments對象

2、of()方法創(chuàng)建一個具有可變數(shù)量參數(shù)的新數(shù)組實例,而不考慮參數(shù)的數(shù)量或類型

參數(shù):item...(任意個參數(shù),將按順序返回數(shù)組中的元素)

let result = Array.of(2, 3, 4)
console.log(result) // [ 2, 3, 4 ]

3、copyWithin()方法,在當前數(shù)組內(nèi)部,將指定位置的成員復制到其他位置(會覆蓋原有位置成員),返回當前數(shù)組

參數(shù):target(從該位置開始替換數(shù)據(jù)),start(從該位置開始讀取數(shù)據(jù),默認為0,如果為負值表示倒數(shù),可選),end(到該位置前,停止讀取數(shù)據(jù),默認為數(shù)組長度,如果為負值,表示倒數(shù))

let arr = [1, 2, 3, 4, 5]
arr.copyWithin(0, 3, 5)
console.log(arr) // [ 4, 5, 3, 4, 5 ]

4、find()方法用于找出第一個符合條件的數(shù)組成員,若沒有符合條件的,返回undefined

參數(shù):callback(item, index, arr)

let arr = [1, 2, 3, 4, 5]
let result = arr.find(item => item > 3)
console.log(result) // 4

5、findIndex()方法用法與find()方法相似,返回第一個符合條件的成員的位置,若沒有符合條件的,返回-1

6、fill()方法用一個固定值填充一個數(shù)組中從起始索引到終止索引內(nèi)的全部元素,不包括終止索引

參數(shù):value(填充數(shù)組元素的值),start(起始索引,可選),end(終止索引,可選)

let arr = [1, 2, 3, 4, 5]
arr.fill(6, 2, 5)
console.log(arr) // [ 1, 2, 6, 6, 6 ]

7、entries()、keys()、values() , 三個數(shù)組遍歷方法,返回一個遍歷器對象,entries()鍵值對的遍歷,keys()鍵名的遍歷,values()鍵值的遍歷

參數(shù):無

let arr = ["a", "b", "c"]
for (let idx of arr.keys()) {
  console.log(idx) // 0 1 2
}
for (let item of arr.values()) {
  console.log(item) // "a" "b" "c"
}
for (let [idx, item] of arr.entries()) {
  console.log(idx + "---" + item) // "0---a" "1---b" "2---c"
}

8、includes()方法用來判斷一個數(shù)組是否包含一個指定的值,如果包含返回true,否則返回false

參數(shù):value(要查找的元素),start(開始查找的位置,可選)

let arr = ["a", "b", "c"]
console.log(arr.includes("a")) // true
console.log(arr.includes("d")) // false

9、flat()方法會按照一個指定的深度遞歸遍歷數(shù)組,并將所有元素與遍歷到的子數(shù)組中的元素和并到一個新數(shù)組中返回

參數(shù):depth(要提取數(shù)組的嵌套結(jié)構(gòu)深度,默認為1,可選)

let arr = ["a", "b", ["c", "d"]]
let result = arr.flat() // ["a", "b", "c", "d"]
let arr1 = ["a", ["b", ["c"]]]
//使用 Infinity 作為深度,展開任意深度的嵌套數(shù)組
let result1 = arr1.flat(Infinity) // ["a", "b", "c"]
總結(jié)

此篇文章記錄了JS中數(shù)組常用的方法,畢竟數(shù)組的實例方法有那么多,好記性不如爛筆頭,寫下此篇文章加深記憶,同時希望對大家也能有所幫助。
如果有錯誤或不嚴謹?shù)牡胤剑瑲g迎批評指正,如果喜歡,歡迎點贊

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/106082.html

相關(guān)文章

  • 重學JS: 數(shù)據(jù)類型及類型檢測

    摘要:數(shù)據(jù)類型七種內(nèi)置類型空值未定義布爾值數(shù)字字符串對象符號除對象之外,其他統(tǒng)稱為基本類型類型檢測運算符后面跟操作數(shù),或者,返回一個類型的字符串值。運算符用于測試構(gòu)造函數(shù)的屬性是否出現(xiàn)在對象的原型鏈中的任何位置。 數(shù)據(jù)類型 JavaScript七種內(nèi)置類型: 空值(null) 未定義(undefined) 布爾值(boolean) 數(shù)字(number) 字符串(string) 對象(obj...

    why_rookie 評論0 收藏0
  • 重學JS:顯式強制類型轉(zhuǎn)換

    ToString ToString負責處理非字符串到字符串的強制類型轉(zhuǎn)換,常用的字符串化方法String()、toString()。基本類型值的字符串化規(guī)則: null轉(zhuǎn)換為null undefined轉(zhuǎn)換為undefined true轉(zhuǎn)化為true 數(shù)字的字符串化遵循通用規(guī)則,極大值或者極小值采用科學計數(shù)法表示 普通對象在字符串化時,實際執(zhí)行Object.prototype.toString...

    xiangchaobin 評論0 收藏0
  • 重學前端學習筆記(九)--JavaScript中的對象分類

    摘要:固有對象由標準規(guī)定,隨著運行時創(chuàng)建而自動創(chuàng)建的對象實例。普通對象由語法構(gòu)造器或者關(guān)鍵字定義類創(chuàng)建的對象,它能夠被原型繼承。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱:ka...

    ShowerSun 評論0 收藏0
  • 重學前端學習筆記(九)--JavaScript中的對象分類

    摘要:固有對象由標準規(guī)定,隨著運行時創(chuàng)建而自動創(chuàng)建的對象實例。普通對象由語法構(gòu)造器或者關(guān)鍵字定義類創(chuàng)建的對象,它能夠被原型繼承。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的可以加入winter的專欄學習【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱:ka...

    tinna 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<