国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES6基礎(chǔ)知識二:ES6中數(shù)組新增了哪些擴展?

這篇具有很好參考價值的文章主要介紹了ES6基礎(chǔ)知識二:ES6中數(shù)組新增了哪些擴展?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ES6基礎(chǔ)知識二:ES6中數(shù)組新增了哪些擴展?,es6,javascript,前端
一、擴展運算符的應(yīng)用

ES6通過擴展元素符…,好比 rest 參數(shù)的逆運算,將一個數(shù)組轉(zhuǎn)為用逗號分隔的參數(shù)序列

console.log(...[1, 2, 3])
// 1 2 3

console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5

[...document.querySelectorAll('div')]
// [<div>, <div>, <div>]

主要用于函數(shù)調(diào)用的時候,將一個數(shù)組變?yōu)閰?shù)序列

function push(array, ...items) {
  array.push(...items);
}

function add(x, y) {
  return x + y;
}

const numbers = [4, 38];
add(...numbers) // 42

可以將某些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)為數(shù)組

[...document.querySelectorAll('div')]

能夠更簡單實現(xiàn)數(shù)組復(fù)制

const a1 = [1, 2];
const […a2] = a1;
// [1,2]

數(shù)組的合并也更為簡潔了

const arr1 = ['a', 'b'];
const arr2 = ['c'];
const arr3 = ['d', 'e'];
[...arr1, ...arr2, ...arr3]
// [ 'a', 'b', 'c', 'd', 'e' ]

注意:通過擴展運算符實現(xiàn)的是淺拷貝,修改了引用指向的值,會同步反映到新數(shù)組

下面看個例子就清楚多了

const arr1 = ['a', 'b',[1,2]];
const arr2 = ['c'];
const arr3  = [...arr1,...arr2]
arr1[2][0] = 9999 // 修改arr1里面數(shù)組成員值
console.log(arr3) // 影響到arr3,['a','b',[9999,2],'c']

擴展運算符可以與解構(gòu)賦值結(jié)合起來,用于生成數(shù)組

const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest  // [2, 3, 4, 5]

const [first, ...rest] = [];
first // undefined
rest  // []

const [first, ...rest] = ["foo"];
first  // "foo"
rest   // []

如果將擴展運算符用于數(shù)組賦值,只能放在參數(shù)的最后一位,否則會報錯

const [...butLast, last] = [1, 2, 3, 4, 5];
// 報錯

const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 報錯

可以將字符串轉(zhuǎn)為真正的數(shù)組

[...'hello']
// [ "h", "e", "l", "l", "o" ]

定義了遍歷器(Iterator)接口的對象,都可以用擴展運算符轉(zhuǎn)為真正的數(shù)組

let nodeList = document.querySelectorAll('div');
let array = [...nodeList];

let map = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);

let arr = [...map.keys()]; // [1, 2, 3]

如果對沒有 Iterator 接口的對象,使用擴展運算符,將會報錯

const obj = {a: 1, b: 2};
let arr = [...obj]; // TypeError: Cannot spread non-iterable object

二、構(gòu)造函數(shù)新增的方法

關(guān)于構(gòu)造函數(shù),數(shù)組新增的方法有如下:

  • Array.from()
  • Array.of()

Array.from()

將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象和可遍歷(iterable)的對象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map)

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']

如果是對象,必須有l(wèi)ength
還可以接受第二個參數(shù),用來對每個元素進行處理,將處理后的值放入返回的數(shù)組

Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]

Array.of()

用于將一組值,轉(zhuǎn)換為數(shù)組

Array.of(3, 11, 8) // [3,11,8]

沒有參數(shù)的時候,返回一個空數(shù)組

當(dāng)參數(shù)只有一個的時候,實際上是指定數(shù)組的長度

參數(shù)個數(shù)不少于 2 個時,Array()才會返回由參數(shù)組成的新數(shù)組

Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]

三、實例對象新增的方法

關(guān)于數(shù)組實例對象新增的方法有如下:

  • copyWithin()
  • find()、findIndex()
  • fill()
  • entries(),keys(),values()
  • includes()
  • flat(),flatMap()

copyWithin()

將指定位置的成員復(fù)制到其他位置(會覆蓋原有成員),然后返回當(dāng)前數(shù)組

參數(shù)如下:

  • target(必需):從該位置開始替換數(shù)據(jù)。如果為負值,表示倒數(shù)。
  • start(可選):從該位置開始讀取數(shù)據(jù),默認(rèn)為 0。如果為負值,表示從末尾開始計算。
  • end(可選):到該位置前停止讀取數(shù)據(jù),默認(rèn)等于數(shù)組長度。如果為負值,表示從末尾開始計算。
[1, 2, 3, 4, 5].copyWithin(0, 3) // 將從 3 號位直到數(shù)組結(jié)束的成員(4 和 5),復(fù)制到從 0 號位開始的位置,結(jié)果覆蓋了原來的 1 和 2
// [4, 5, 3, 4, 5] 

find()、findIndex()

find()用于找出第一個符合條件的數(shù)組成員

參數(shù)是一個回調(diào)函數(shù),接受三個參數(shù)依次為當(dāng)前的值、當(dāng)前的位置和原數(shù)組

[1, 5, 10, 15].find(function(value, index, arr) {
  return value > 9;
}) // 10

findIndex返回第一個符合條件的數(shù)組成員的位置,如果所有成員都不符合條件,則返回-1

[1, 5, 10, 15].findIndex(function(value, index, arr) {
  return value > 9;
}) // 2

這兩個方法都可以接受第二個參數(shù),用來綁定回調(diào)函數(shù)的this對象。

function f(v){
  return v > this.age;
}
let person = {name: 'John', age: 20};
[10, 12, 26, 15].find(f, person);    // 26

fill()

使用給定值,填充一個數(shù)組

['a', 'b', 'c'].fill(7)
// [7, 7, 7]

new Array(3).fill(7)
// [7, 7, 7]

還可以接受第二個和第三個參數(shù),用于指定填充的起始位置和結(jié)束位置

['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']

注意,如果填充的類型為對象,則是淺拷貝

entries(),keys(),values()

keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷

for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0
// 1

for (let elem of ['a', 'b'].values()) {
  console.log(elem);
}
// 'a'
// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {
  console.log(index, elem);
}
// 0 "a"

includes()

用于判斷數(shù)組是否包含給定的值

[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true

方法的第二個參數(shù)表示搜索的起始位置,默認(rèn)為0

參數(shù)為負數(shù)則表示倒數(shù)的位置

[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true

flat(),flatMap()

將數(shù)組扁平化處理,返回一個新數(shù)組,對原數(shù)據(jù)沒有影響

[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]

flat()默認(rèn)只會“拉平”一層,如果想要“拉平”多層的嵌套數(shù)組,可以將flat()方法的參數(shù)寫成一個整數(shù),表示想要拉平的層數(shù),默認(rèn)為1

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

flatMap()方法對原數(shù)組的每個成員執(zhí)行一個函數(shù)相當(dāng)于執(zhí)行Array.prototype.map(),然后對返回值組成的數(shù)組執(zhí)行flat()方法。該方法返回一個新數(shù)組,不改變原數(shù)組

// 相當(dāng)于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

flatMap()方法還可以有第二個參數(shù),用來綁定遍歷函數(shù)里面的this

四、數(shù)組的空位

數(shù)組的空位指,數(shù)組的某一個位置沒有任何值

ES6 則是明確將空位轉(zhuǎn)為undefined,包括Array.from、擴展運算符、copyWithin()、fill()、entries()、keys()、values()、find()和findIndex()

建議大家在日常書寫中,避免出現(xiàn)空位

五、排序穩(wěn)定性

將sort()默認(rèn)設(shè)置為穩(wěn)定的排序算法

const arr = [
  'peach',
  'straw',
  'apple',
  'spork'
];

const stableSorting = (s1, s2) => {
  if (s1[0] < s2[0]) return -1;
  return 1;
};

arr.sort(stableSorting)
// ["apple", "peach", "straw", "spork"]

排序結(jié)果中,straw在spork的前面,跟原始順序一致文章來源地址http://www.zghlxwxcb.cn/news/detail-601559.html

到了這里,關(guān)于ES6基礎(chǔ)知識二:ES6中數(shù)組新增了哪些擴展?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ES6基礎(chǔ)知識八:你是怎么理解ES6中Proxy的?使用場景?

    ES6基礎(chǔ)知識八:你是怎么理解ES6中Proxy的?使用場景?

    一、介紹 定義: 用于定義基本操作的自定義行為 本質(zhì): 修改的是程序默認(rèn)形為,就形同于在編程語言層面上做修改,屬于元編程(meta programming) 元編程(Metaprogramming,又譯超編程,是指某類計算機程序的編寫,這類計算機程序編寫或者操縱其它程序(或者自身)作為它們的

    2024年02月15日
    瀏覽(28)
  • ES6基礎(chǔ)知識七:你是怎么理解ES6中 Generator的?使用場景?

    ES6基礎(chǔ)知識七:你是怎么理解ES6中 Generator的?使用場景?

    一、介紹 Generator 函數(shù)是 ES6 提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同 回顧下上文提到的解決異步的手段: 回調(diào)函數(shù) promise 那么,上文我們提到promsie已經(jīng)是一種比較流行的解決異步方案,那么為什么還出現(xiàn)Generator?甚至async/await呢? 該問題我們留在后面再

    2024年02月15日
    瀏覽(23)
  • css基礎(chǔ)知識十一:CSS3新增了哪些新特性?

    css基礎(chǔ)知識十一:CSS3新增了哪些新特性?

    一、是什么 css,即層疊樣式表(Cascading Style Sheets)的簡稱,是一種標(biāo)記語言,由瀏覽器解釋執(zhí)行用來使頁面變得更為美觀 css3是css的最新標(biāo)準(zhǔn),是向后兼容的,CSS1/2的特性在CSS3 里都是可以使用的 CSS3 也增加了很多新特性,為開發(fā)者帶來了更佳的開發(fā)體驗 從幾個維度列舉一些

    2024年02月11日
    瀏覽(26)
  • 【ES6】—數(shù)組的擴展

    【ES6】—數(shù)組的擴展

    ES5 的 slice 方法 arguments 是一個對應(yīng)于傳遞給函數(shù)的參數(shù)的類/偽數(shù)組對象 ES6的Array.from()方法 PS: 通過new Array的時候,參數(shù)為多個時,參數(shù)表示的是數(shù)組的值;參數(shù)為一個時,參數(shù)表示是數(shù)組的長度 參數(shù):copyWithin(target, start, end) target: 從哪個索引開始替換 strat: 元素復(fù)制的起始

    2024年02月12日
    瀏覽(19)
  • JavaScript筆記——快速了解 ES6 新增數(shù)組方法,開箱即用(含案例)

    JavaScript筆記——快速了解 ES6 新增數(shù)組方法,開箱即用(含案例)

    數(shù)組是 JavaScript 以及多數(shù)編程其他編程語言的一種基礎(chǔ)數(shù)據(jù)類型。 ES6 提供了許多新的數(shù)組方法,這篇文章將介紹其中一些常用的數(shù)組方法及其使用示例。 Array.from() 方法從一個類似數(shù)組或可迭代對象中創(chuàng)建一個新的,淺拷貝的數(shù)組實例。例如,將字符串轉(zhuǎn)換為字符數(shù)組。 A

    2024年02月10日
    瀏覽(27)
  • ES6知識點匯總(2)--數(shù)組

    1、擴展運算符的應(yīng)用 ES6通過擴展元素符…,就像rest 參數(shù)的逆運算,將一個數(shù)組轉(zhuǎn)為用逗號分隔的參數(shù)序列 主要用于函數(shù)調(diào)用的時候,將一個數(shù)組變?yōu)閰?shù)序列 能夠更簡單實現(xiàn)數(shù)組復(fù)制 數(shù)組的合并也更為簡潔 注意:通過擴展運算符實現(xiàn)的是淺拷貝,修改了引用指向的值,

    2024年02月13日
    瀏覽(29)
  • ES6 全詳解 let 、 const 、解構(gòu)賦值、剩余運算符、函數(shù)默認(rèn)參數(shù)、擴展運算符、箭頭函數(shù)、新增方法,promise、Set、class等等

    ? ECMAScript 6.0,簡稱 ES6,是 JavaScript 語言的下一代標(biāo)準(zhǔn),已經(jīng)在 2015 年 6 月正式發(fā)布了。它的目標(biāo),是使得 JavaScript 語言可以用來編寫復(fù)雜的大型應(yīng)用程序,成為企業(yè)級開發(fā)語言 要講清楚這個問題,需要回顧歷史。1996 年 11 月,JavaScript 的創(chuàng)造者 Netscape 公司,決定將 JavaSc

    2024年04月15日
    瀏覽(27)
  • 《ElementUI 基礎(chǔ)知識》png 圖片擴展 icon用法

    《ElementUI 基礎(chǔ)知識》png 圖片擴展 icon用法

    UI 設(shè)計給的切圖是 .png 格式。但想與 Element UI icon 用法類似,方案如下。 準(zhǔn)備圖片 新建文件,可使用 CSS 預(yù)處理語言 styl 或 scss 。 stylus 方式 文件 icon.styl scss 方式 文件 icon.scss 全局導(dǎo)入。在 Vue 框架中直接導(dǎo)入即可。

    2024年04月23日
    瀏覽(37)
  • 電腦鍵盤基礎(chǔ)知識,你知道哪些?

    電腦鍵盤基礎(chǔ)知識,你知道哪些?

    “我是一個電腦小白,我現(xiàn)在想開始學(xué)習(xí)電腦。身邊的人跟我說,我可以先了解。電腦入門基本知識鍵盤,電腦鍵盤基礎(chǔ)知識有哪些?有沒有詳細的介紹?” 電腦鍵盤是我們?nèi)粘J褂秒娔X必不可少的輸入設(shè)備,但還是有很多小伙伴不知道電腦鍵盤上各種按鍵的功能和用途。本

    2023年04月09日
    瀏覽(24)
  • 數(shù)組基礎(chǔ)知識二

    特別說明 一維數(shù)組的定義(對數(shù)組空間進行清理,置0,不會產(chǎn)生隨機值):數(shù)組在使用前要先定義;告訴編譯器數(shù)組元素的類型;編譯器會給這個數(shù)組預(yù)先分配連續(xù)的存儲空間;定義的格式為:元素類型名 數(shù)組名[數(shù)組長度]。 1、一維數(shù)組的遍歷 :在操作數(shù)組時,經(jīng)常需要

    2024年02月05日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包