成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ES2023來了!深入解析JavaScript的最新更新

開發
Symbol是ECMAScript中唯一的原始類型,允許使用唯一的值,因此可以使用Symbol作為鍵,而不是創建一個新的帶有WeakMap的對象。

1.從數組末尾查找元素

這個函數允許我們根據條件從數組的最后一個元素向前查找元素。例如:

const array = [{a: 1, b: 1}, {a: 2, b: 2}, {a: 3, b: 3}, {a: 4, b: 4}]

console.log(array.findLast(n => n)); //result -> {a: 4,b: 4 }

console.log(array.findLast(n => n.a * 5 === 20)); // result -> {a:4,b:4} 

console.log(array.findLast(n => n.a * 5 === 21)); //result -> undefined 

console.log(array.findLastIndex(n => n.a * 5 === 21)); // result -> -1 

console.log(array.findLastIndex(n => n.a * 5 === 20)); // result -> 3

分析:

const array = [{a: 1, b: 1}, {a: 2, b: 2}, {a: 3, b: 3}, {a: 4, b: 4}]
console.log(array.findLast(n => n)); //結果 -> {a: 4,b: 4 }

使用 findLast 方法從數組的末尾開始查找第一個滿足條件(n => n,即所有元素)的元素。因為所有元素都滿足條件,所以它返回了數組的最后一個元素 {a: 4, b: 4}。

console.log(array.findLast(n => n.a * 5 === 20)); //結果 -> {a:4,b:4},因為條件為真,所以返回最后一個元素。

使用 findLast 方法從數組的末尾開始查找第一個滿足條件(n => n.a * 5 === 20)的元素。這個條件相當于在查找數組中 a 屬性值為4的元素,所以它返回了 {a: 4, b: 4}。

console.log(array.findLast(n => n.a * 5 === 21)); //結果 -> undefined,因為條件為假,所以返回undefined,而不是 {a:4,b:4}。

使用 findLast 方法從數組的末尾開始查找第一個滿足條件(n => n.a * 5 === 21)的元素。由于數組中沒有任何元素的 a 屬性值可以滿足這個條件,所以返回 undefined。

console.log(array.findLastIndex(n => n.a * 5 === 21)); //結果 -> -1,因為條件不能為返回最后一個元素。

使用 findLastIndex 方法從數組的末尾開始查找第一個滿足條件(n => n.a * 5 === 21)的元素的索引。由于數組中沒有任何元素的 a 屬性值可以滿足這個條件,所以返回 -1。

console.log(array.findLastIndex(n => n.a * 5 === 20)); //結果 -> 3,這是最后一個元素的索引,因為條件為真。

使用 findLastIndex 方法從數組的末尾開始查找第一個滿足條件(n => n.a * 5 === 20)的元素的索引。這個條件相當于在查找數組中 a 屬性值為4的元素的索引,所以它返回了 3,這是數組的最后一個元素的索引。

2.Hashbang 語法

這個特性使我們能夠在某些命令行接口中使用 Hashbang / Shebang。Shebang 用 #! 表示,是腳本開始的特殊行,告訴操作系統執行腳本時應該使用哪個解釋器。

#!/usr/bin/env node
// in the Script Goal
'use strict';
console.log(2*3);

#!/usr/bin/env node
// in the Module Goal
export {};
console.log(2*2);

#!/usr/bin/env node 這行代碼將直接調用一個 Node.js 源文件,作為其自身的可執行文件。

我們不需要使用這行代碼 (#!/usr/bin/env node) 來顯式地通過 Node 解釋器調用文件,例如, node ./file 。

3.將 Symbols 作為 WeakMap 的鍵

這允許使用唯一的 Symbols 作為鍵。目前 WeakMaps 只允許對象作為鍵。因為它們共享同樣的身份特性。

Symbol是ECMAScript中唯一的原始類型,允許使用唯一的值,因此可以使用Symbol作為鍵,而不是創建一個新的帶有WeakMap的對象。

const weak = new WeakMap();

const key = Symbol('my ref');
const someObject = { a:1 };

weak.set(key, someObject);
console.log(weak.get(key));

4.通過復制改變數組

這在 Array.prototype 上提供了額外的方法,通過返回帶有更改的新數組副本,而不是更新原始數組來更改數組。

新引入的 Array.prototype 函數包括:

  1. Array.prototype.toReversed()
  2. Array.prototype.toSorted(compareFn)
  3. Array.prototype.toSpliced(start, deleteCount, ...items)
  4. Array.prototype.with(index, value)

事例

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
/* toReversed */
const reversed = numbers.toReversed();
console.log("reversed", reversed); // "reversed", [9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

這段代碼使用了 toReversed 方法,該方法返回一個新數組,新數組的元素順序與原數組相反。我們可以看到,原數組 numbers 并未被改變。

/* toSorted  */
const sortedArr = numbers.toSorted();
console.log("sorted", sortedArr); // "sorted", [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

這段代碼使用了 toSorted 方法,該方法返回一個新數組,新數組的元素是原數組元素的排序結果。由于原數組已經是排序的,所以新數組與原數組相同。我們可以看到,原數組 numbers 并未被改變。

/* with */
const replaceWith = numbers.with(1, 100);
console.log("with", replaceWith); // "with", [1, 100, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

這段代碼使用了 with 方法,該方法返回一個新數組,新數組在指定索引位置的元素被替換為指定值。我們可以看到,新數組的第二個元素已經被替換為 100,而原數組 numbers 并未被改變。

/* toSpliced */
const splicedArr = numbers.toSpliced(0, 4);
console.log("toSpliced", splicedArr); // "toSpliced", [5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

這段代碼使用了 toSpliced 方法,該方法返回一個新數組,新數組刪除了原數組從指定位置開始的指定數量的元素。我們可以看到,新數組刪除了從位置0開始的4個元素,而原數組 numbers 并未被改變。

這些都是ES2023即將推出的一些令人期待的新功能

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2023-01-31 07:36:25

JavaScript數組緩沖

2023-11-24 08:31:03

ECMAScriptES2021

2023-05-22 16:03:00

Javascript開發前端

2023-07-11 09:07:49

數組Promise方法

2021-08-13 14:08:24

Windows 11Windows微軟

2022-02-04 23:12:54

Windows 11Windows微軟

2023-03-16 19:17:57

2022-04-08 07:29:25

Windows 11微軟新預覽版

2018-08-24 06:13:18

IPv6SDNIPv4

2022-12-05 11:44:49

PrintDebugIceCream

2009-10-15 08:52:42

Windows 7銷售市場

2016-11-14 19:45:39

JavaScript

2011-06-03 09:33:01

Windows 8

2021-06-16 09:58:46

Windows 10微軟漏洞

2021-04-16 15:02:38

Python 開發編程語言

2021-06-11 05:19:19

Windows10操作系統微軟

2021-04-19 11:45:31

Pythonswitch編程語言

2021-05-17 11:13:43

iOS蘋果系統

2013-07-17 10:07:29

Windows Pho功能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩高清一区 | 99久久久无码国产精品 | 国产精品日产欧美久久久久 | 久久久免费精品 | 久久国产精品精品 | 天天天堂| 久久久久资源 | 中文字幕日韩欧美一区二区三区 | 激情五月婷婷 | 99久久精品免费看国产高清 | 天天干天天干 | 精品乱人伦一区二区三区 | 高清视频一区二区三区 | 国产精品久久久久久久久免费丝袜 | 成人午夜| 一区二区成人在线 | 国产精品久久久久久一区二区三区 | 久久久久久久久国产精品 | av中文字幕在线播放 | 亚洲精品中文字幕在线 | 中文日韩在线 | 亚洲三级在线 | www.奇米| 手机三级电影 | 激情小视频 | 国产精品久久久久久久岛一牛影视 | 亚洲精品久久久一区二区三区 | 日韩免费高清视频 | 鲁大师一区影视 | 91爱啪啪 | 欧美精品在线免费 | 国产欧美精品一区 | 亚洲一区二区三区视频在线 | 久久久久久99 | 亚洲网站观看 | 91av在线影院 | www.日韩av.com| 亚洲二区视频 | 羞羞视频网| 精品国产一区二区三区久久久久久 | 视频一区二区在线观看 |