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

ES6知識(shí)點(diǎn)匯總(2)--數(shù)組

這篇具有很好參考價(jià)值的文章主要介紹了ES6知識(shí)點(diǎn)匯總(2)--數(shù)組。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. ES6中數(shù)組新增了哪些擴(kuò)展?

1、擴(kuò)展運(yùn)算符的應(yīng)用
ES6通過(guò)擴(kuò)展元素符…,就像rest 參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(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í)候,將一個(gè)數(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')]

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

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

數(shù)組的合并也更為簡(jiǎn)潔

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

注意:通過(guò)擴(kuò)展運(yùn)算符實(shí)現(xiàn)的是淺拷貝,修改了引用指向的值,會(huì)同步反映到新數(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']

擴(kuò)展運(yùn)算符可以與解構(gòu)賦值結(jié)合起來(lái),用于生成數(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   // []

如果將擴(kuò)展運(yùn)算符用于數(shù)組賦值,只能放在參數(shù)的最后一位,否則會(huì)報(bào)錯(cuò)

const [...butLast, last] = [1, 2, 3, 4, 5];
// 報(bào)錯(cuò)
const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 報(bào)錯(cuò)
可以將字符串轉(zhuǎn)為真正的數(shù)組
[...'hello']
// [ "h", "e", "l", "l", "o" ]

定義了遍歷器(Iterator)接口的對(duì)象,都可以用擴(kuò)展運(yùn)算符轉(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]
如果對(duì)沒(méi)有 Iterator 接口的對(duì)象,使用擴(kuò)展運(yùn)算符,將會(huì)報(bào)錯(cuò)
const obj = {a: 1, b: 2};
let arr = [...obj]; // TypeError: Cannot spread non-iterable object

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

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

Array.from()
將兩類對(duì)象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對(duì)象和可遍歷(iterable)的對(duì)象(包括 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']

還可以接受第二個(gè)參數(shù),用來(lái)對(duì)每個(gè)元素進(jìn)行處理,將處理后的值放入返回的數(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]

沒(méi)有參數(shù)的時(shí)候,返回一個(gè)空數(shù)組

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

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

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

3、實(shí)例對(duì)象新增的方法
數(shù)組實(shí)例對(duì)象新增的方法有如下:

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

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

參數(shù)如下:

target(必需):從該位置開(kāi)始替換數(shù)據(jù)。如果為負(fù)值,表示倒數(shù)。
start(可選):從該位置開(kāi)始讀取數(shù)據(jù),默認(rèn)為 0。如果為負(fù)值,表示從末尾開(kāi)始計(jì)算。
end(可選):到該位置前停止讀取數(shù)據(jù),默認(rèn)等于數(shù)組長(zhǎng)度。如果為負(fù)值,表示從末尾開(kāi)始計(jì)算。

[1, 2, 3, 4, 5].copyWithin(0, 3) // 將從 3 號(hào)位直到數(shù)組結(jié)束的成員(4 和 5),復(fù)制到從 0 號(hào)位開(kāi)始的位置,結(jié)果覆蓋了原來(lái)的 1 和 2
// [4, 5, 3, 4, 5] 

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

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


[1, 5, 10, 15].find(function(value, index, arr) {
  return value > 9;
}) // 10
findIndex返回第一個(gè)符合條件的數(shù)組成員的位置,如果所有成員都不符合條件,則返回-1

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

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


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

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


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

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

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


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

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

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

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

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

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


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

flat(),flatMap()
將數(shù)組扁平化處理,返回一個(gè)新數(shù)組,對(duì)原數(shù)據(jù)沒(méi)有影響


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

flat()默認(rèn)只會(huì)“拉平”一層,如果想要“拉平”多層的嵌套數(shù)組,可以將flat()方法的參數(shù)寫(xiě)成一個(gè)整數(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()方法對(duì)原數(shù)組的每個(gè)成員執(zhí)行一個(gè)函數(shù)相當(dāng)于執(zhí)行Array.prototype.map(),然后對(duì)返回值組成的數(shù)組執(zhí)行flat()方法。該方法返回一個(gè)新數(shù)組,不改變?cè)瓟?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()方法還可以有第二個(gè)參數(shù),用來(lái)綁定遍歷函數(shù)里面的this

4、數(shù)組的空位
數(shù)組的空位是值數(shù)組的某一個(gè)位置沒(méi)有任何值

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

5、排序穩(wěn)定性
將sort()默認(rèn)設(shè)置為穩(wěn)定的排序算法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-534584.html


const arr = [
  'anady',
  'strat',
  'banana',
  'day'
];

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

arr.sort(sortFunc)
// ['anady', 'banana', 'day', 'strat']

到了這里,關(guān)于ES6知識(shí)點(diǎn)匯總(2)--數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

    一、擴(kuò)展運(yùn)算符的應(yīng)用 ES6通過(guò)擴(kuò)展元素符…,好比 rest 參數(shù)的逆運(yùn)算,將一個(gè)數(shù)組轉(zhuǎn)為用逗號(hào)分隔的參數(shù)序列 主要用于函數(shù)調(diào)用的時(shí)候,將一個(gè)數(shù)組變?yōu)閰?shù)序列 可以將某些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)為數(shù)組 能夠更簡(jiǎn)單實(shí)現(xiàn)數(shù)組復(fù)制 const a1 = [1, 2]; const […a2] = a1; // [1,2] 數(shù)組的合并也更為

    2024年02月16日
    瀏覽(26)
  • 【ES6】JavaScript 中的數(shù)組方法reduce

    【ES6】JavaScript 中的數(shù)組方法reduce

    reduce() 是一個(gè) JavaScript 中的數(shù)組方法,它會(huì)對(duì)數(shù)組的每個(gè)元素執(zhí)行一個(gè)提供的 reducer 函數(shù),將其減少到一個(gè)單一的值。 這是 reduce() 的基本用法: 這里: callback 是一個(gè)用于每個(gè)數(shù)組元素的函數(shù),接受四個(gè)參數(shù): accumulator:累加器累加回調(diào)的返回值。它是上一次調(diào)用回調(diào)時(shí)返回

    2024年02月10日
    瀏覽(22)
  • 【JavaScript】探索ES6中的數(shù)組API:簡(jiǎn)潔高效的操作方式

    ES6 ( ECMAScript 2015 )是 JavaScript 語(yǔ)言的一個(gè)重要版本,為編寫(xiě)更加簡(jiǎn)潔、便捷和可讀性更高的代碼提供了很多新的特性和 API。想了解ES6所有新增API,可以跳轉(zhuǎn)至我的另一篇博客:JS語(yǔ)法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性 其中 數(shù)組相關(guān)的 API 也在 ES6 中得到了大大的增強(qiáng),

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

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

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

    2024年02月10日
    瀏覽(28)
  • ES6必會(huì)重點(diǎn)匯總

    當(dāng)下的前端開(kāi)發(fā)已經(jīng)成為一項(xiàng)非常流行的技能。在這個(gè)領(lǐng)域中,ES6是一個(gè)重要的主題。ES6是ECMAScript 2015的縮寫(xiě),是JavaScript語(yǔ)言的下一個(gè)版本,引入了很多新的語(yǔ)言特性和API,讓JavaScript更加強(qiáng)大和易用。 本文將介紹ES6中的一些重點(diǎn)內(nèi)容,幫助你了解ES6的新特性并更好地掌握

    2024年02月01日
    瀏覽(16)
  • [ES6] 數(shù)組

    Array.of(),將參數(shù)中所有值作為元素形成數(shù)組,參數(shù)值可為不同類型,參數(shù)為空時(shí)返回空數(shù)組 Array.from(),將類數(shù)組對(duì)象或可迭代對(duì)象轉(zhuǎn)化為數(shù)組 Array.from(arrayLike[, mapFn[, thisArg]]) arrayLike:想要轉(zhuǎn)換的類數(shù)組對(duì)象或可迭代對(duì)象 mapFn:可選,map 函數(shù),用于對(duì)每個(gè)元素進(jìn)行處理,放入數(shù)組的是

    2023年04月23日
    瀏覽(15)
  • 前端面試問(wèn)題匯總 - ES6篇

    let?和?const?聲明 :?引入塊級(jí)作用域的變量聲明方式,let?聲明的變量可重新賦值,const?聲明的變量不可重新賦值。 箭頭函數(shù) (Arrow?Functions):?提供了更簡(jiǎn)潔的函數(shù)定義語(yǔ)法,并且沒(méi)有自己的?this、arguments、super?或?new.target,這些值繼承自執(zhí)行上下文。 模板字符串 (

    2024年04月16日
    瀏覽(23)
  • 【ES6】—數(shù)組的擴(kuò)展

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

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

    2024年02月12日
    瀏覽(20)
  • JavaScript ES6實(shí)現(xiàn)繼承

    JavaScript ES6實(shí)現(xiàn)繼承

    1 對(duì)象的方法補(bǔ)充 2 原型繼承關(guān)系圖 3 class方式定義類 4 extends實(shí)現(xiàn)繼承 5 extends實(shí)現(xiàn)繼承 6 多態(tài)概念的理 function 創(chuàng)建的名稱如果開(kāi)頭是大寫(xiě)的,那這個(gè)創(chuàng)建的不是函數(shù),是創(chuàng)建了類。 可以把class創(chuàng)建的類當(dāng)做是function創(chuàng)建的類的一種語(yǔ)法糖。但是在直接使用的方面是有不同之處

    2024年02月16日
    瀏覽(27)
  • 數(shù)組的原型方法-es6

    數(shù)組的原型方法-es6

    數(shù)組的原型方法-es6 Array.form() Array.of() find() 和 findIndex() copyWithin() fill() entries(),keys()和values() includes() flat()和flatMap() 擴(kuò)展運(yùn)算符 at() reduce()和reduceRight() some()判斷數(shù)組中是否存在滿足條件的項(xiàng) 18、Array.form() Array.from方法用于將兩類對(duì)象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對(duì)象(array-li

    2024年02月09日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包