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

資訊專欄INFORMATION COLUMN

《深入理解ES6》筆記—— 改進數(shù)組的功能(10)

inapt / 3257人閱讀

摘要:創(chuàng)建數(shù)組中創(chuàng)建數(shù)組的方式數(shù)組字面量一個數(shù)組。傳入一個回調(diào)函數(shù),找到數(shù)組中符合當前搜索規(guī)則的第一個元素,返回它,并且終止搜索。用新元素替換掉數(shù)組內(nèi)的元素,可以指定替換下標范圍。

ES5提供的數(shù)組已經(jīng)很強大,但是ES6中繼續(xù)改進了一些,主要是增加了新的數(shù)組方法,所以這章的知識非常少。

創(chuàng)建數(shù)組

ES5中創(chuàng)建數(shù)組的方式:數(shù)組字面量、new一個數(shù)組。

const arr1 = [] //數(shù)組字面量
const arr2 = new Array() //new構建

ES6創(chuàng)建數(shù)組:Array.of()、Array.from()

Array.of()

ES5中new一個人數(shù)組的時候,會存在一個令人困惑的情況。當new一個數(shù)字的時候,生成的是一個長度為該數(shù)字的數(shù)組,當new一個字符串的時候,生成的是該字符串為元素的數(shù)組。

const a = new Array(2)
const b = new Array("2")
console.log(a, b) //[undefined, undefined] ["2"]

這樣一來,導致new Array的行為是不可預測的,Array.of()出現(xiàn)為的就是解決這個情況。

const c = Array.of(2)
const d = Array.of("2")
console.log(c, d) // [2] ["2"]

使用Array.of()創(chuàng)建的數(shù)組傳入的參數(shù)都是作為數(shù)組的元素,而不在是數(shù)組長度,這樣就避免了使用上的歧義。

Array.from()

如果說Array.of()是創(chuàng)建一個新數(shù)組,而Array.from()是將類數(shù)組轉(zhuǎn)換成數(shù)組。

下面的例子講的是將arguments轉(zhuǎn)換成數(shù)組。arguments是類數(shù)組對象,他表示的是當前函數(shù)的所有參數(shù),如果函數(shù)沒有參數(shù),那么arguments就為空。

function test(a, b) {
  let arr = Array.from(arguments)
  console.log(arr)
}
test(1, 2) //[1, 2]

映射轉(zhuǎn)換:Array.from(arg1, arg2),我們可以給該方法提供2個參數(shù),第二個參數(shù)作為第一個參數(shù)的轉(zhuǎn)換??磦€簡單例子你就懂了。

function test(a, b) {
  let arr = Array.from(arguments, value => value + 2)
  console.log(arr)
}
test(1, 2) //[3, 4]

Array.from還可以設置第三個參數(shù),指定this。

Array.from()轉(zhuǎn)換可迭代對象:這個用法只需要一個例子,數(shù)組去重。

function test() {
  return Array.from(new Set(...arguments))
}
const s = test([1, "2", 3, 3, "2"])
console.log(s) // [1,"2",3]
給數(shù)組添加新方法

ES6給數(shù)組添加了幾個新方法:find()、findIndex()、fill()、copyWithin()。

1、find():傳入一個回調(diào)函數(shù),找到數(shù)組中符合當前搜索規(guī)則的第一個元素,返回它,并且終止搜索。

const arr = [1, "2", 3, 3, "2"]
console.log(arr.find(n => typeof n === "number")) // 1

2、findIndex():傳入一個回調(diào)函數(shù),找到數(shù)組中符合當前搜索規(guī)則的第一個元素,返回它的下標,終止搜索。

const arr = [1, "2", 3, 3, "2"]
console.log(arr.findIndex(n => typeof n === "number")) // 0

3、fill():用新元素替換掉數(shù)組內(nèi)的元素,可以指定替換下標范圍。

arr.fill(value, start, end)

測試一下

const arr = [1, 2, 3]
console.log(arr.fill(4)) // [4, 4, 4] 不指定開始和結(jié)束,全部替換

const arr1 = [1, 2, 3]
console.log(arr1.fill(4, 1)) // [1, 4, 4] 指定開始位置,從開始位置全部替換

const arr2 = [1, 2, 3]
console.log(arr2.fill(4, 0, 2)) // [4, 4, 3] 指定開始和結(jié)束位置,替換當前范圍的元素

4、copyWithin():選擇數(shù)組的某個下標,從該位置開始復制數(shù)組元素,默認從0開始復制。也可以指定要復制的元素范圍。

arr.copyWithin(target, start, end)

測試一下

const arr = [1, 2, 3, 4, 5]
console.log(arr.copyWithin(3)) // [1,2,3,1,2] 從下標為3的元素開始,復制數(shù)組,所以4, 5被替換成1, 2

const arr1 = [1, 2, 3, 4, 5]
console.log(arr1.copyWithin(3, 1)) // [1,2,3,2,3] 從下標為3的元素開始,復制數(shù)組,指定復制的第一個元素下標為1,所以4, 5被替換成2, 3

const arr2 = [1, 2, 3, 4, 5]
console.log(arr2.copyWithin(3, 1, 2)) // [1,2,3,2,5] 從下標為3的元素開始,復制數(shù)組,指定復制的第一個元素下標為1,結(jié)束位置為2,所以4被替換成2
其他新增方法

其他還有定型數(shù)組、數(shù)組緩沖區(qū)的概念,你可以詳細查看書上教程。

總結(jié)

掌握新的創(chuàng)建數(shù)組的方式,以及數(shù)組新增的幾個方法,就夠你使用了。定型數(shù)組和數(shù)組緩沖區(qū)一般人可以不用了解的太詳細。

=> 返回文章目錄

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84472.html

相關文章

  • 深入理解ES6筆記——導讀

    摘要:最近買了深入理解的書籍來看,為什么學習這么久還要買這本書呢主要是看到核心團隊成員及的創(chuàng)造者為本書做了序,作為一個粉絲,還是挺看好這本書能給我?guī)硪粋€新的升華,而且本書的作者也非常厲害。 使用ES6開發(fā)已經(jīng)有1年多了,以前看的是阮一峰老師的ES6教程,也看過MDN文檔的ES6語法介紹。 最近買了《深入理解ES6》的書籍來看,為什么學習ES6這么久還要買這本書呢?主要是看到Daniel A...

    Godtoy 評論0 收藏0
  • 深入理解ES6之《改進數(shù)組功能

    摘要:方法由于構造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下方法總會創(chuàng)建一個包含所有參數(shù)的數(shù)組方法不通過屬性確定返回值的類型,它使用當前構造函數(shù),也就是方法中的值來確定正確的返回數(shù)據(jù)的類型方法以前總是使用將類數(shù)組轉(zhuǎn)換成數(shù)組方法可接受可迭代對象或類數(shù)組對 Array.of方法 由于Array構造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下: let items = new Array(2) console....

    Awbeci 評論0 收藏0

發(fā)表評論

0條評論

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