首页 > 其他分享 >复习ES(6-11)语法之ES10

复习ES(6-11)语法之ES10

时间:2023-07-10 21:45:13浏览次数:50  
标签:11 flat const log JSON 数组 console ES10 ES

目录

Object.fromEntries()

Object.entries()返回一个给定对象自身可枚举属性的键值对数组。

Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。

const obj = {
 name: "zzz",
 age: 18,
};
const entries = Object.entries(obj);
console.log(entries); // [ [ 'name', 'zzz' ], [ 'age', 18 ] ]

// ES10
const fromEntries = Object.fromEntries(entries);
console.log(fromEntries); // { name: 'zzz', age: 18 }

该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合将 Map 结构转为对象。

const map = new Map();
map.set("name", "zzz");
map.set("age", 18);
console.log(map);
const fromMapEntries = Object.fromEntries(map); // Map(2) { 'name' => 'zzz', 'age' => 18 }
console.log(fromMapEntries); // { name: 'zzz', age: 18 }

字符串扩展

ES2019 对字符串实例新增了trimStart()trimEnd()这两个方法。它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

const str = "  apple  ";
console.log(str);
console.log(str.replace(/^\s+/g, "")); // 去掉前面的空格
console.log(str.replace(/\s+$/g, "")); // 去掉后面的空格

//去掉前面的空格
console.log(str.trimStart());
// 去掉后面的空格
console.log(str.trimEnd());

数组扩展

  • Array.prototype.flat()

数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9]]];
console.log(arr.flat()); // [ 1, 2, 3, 4, 5, 6, [ 7, 8, 9 ] ]
console.log(arr.flat(2)); // [ 1, 2, 3, 4, 5, 6,7, 8, 9 ]
console.log(arr.flat(Infinity)); // [ 1, 2, 3, 4, 5, 6,7, 8, 9 ]
  • flatMap()

const arr = [1, 2, 3, 4, 5];
// const res = arr.map((x) => [x + 1]); //生成二维数组
// console.log(res); // [ [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ] ]
// // 将结果扁平化
// console.log(res.flat()); // [ 2, 3, 4, 5, 6 ]
const res = arr.flatMap((x) => [x + 1]);
console.log(res); // [ 2, 3, 4, 5, 6 ]

flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

JSON扩展

  • JSON.superset

背景是ES2019之前不支持转义行分隔符 (\u2028) 和段落分隔符 (\u2029) 字符,且在解析过程时报错: SyntaxError: Invalid or unexpected token。 新的提供了支持

  • JSON.stringify()增强能力

JSON.stringify在 ES10 修复了对于一些超出范围的 Unicode展示错误的问题。因为 JSON 都是被编码成 UTF-8,所以遇到 0xD800–0xDFFF 之内的字符会因为无法编码成 UTF-8 进而导致显示错误。在 ES10 它会用转义字符的方式来处理这部分字符而非编码的方式,这样就会正常显示了。

// \uD83D\uDE0E  emoji 多字节的一个字符
console.log(JSON.stringify('\uD83D\uDE0E')) // "?"
// 如果我们只去其中的一部分 \uD83D 这其实是个无效的字符串
// 之前的版本 ,这些字符将替换为特殊字符,而现在将未配对的代理代码点表示为JSON转义序列
console.log(JSON.stringify('\uD83D')) // "\ud83d"

Symbol.prototype.description()

ES2019 提供了一个 Symbol 值的实例属性description,直接返回 Symbol 值的描述。description只读不能写。

const s1 = Symbol("zzz");
console.log(s1);
console.log(s1.description);

const s2 = Symbol();
console.log(s2);
console.log(s2.description);
s2.description = "111";
console.log(s2.description);

标签:11,flat,const,log,JSON,数组,console,ES10,ES
From: https://www.cnblogs.com/Small-Windmill/p/17542408.html

相关文章

  • 爬虫学习02 requests高级用法
    1requests高级用法1.0自动携带cookie的session对象#session对象----》已经模拟登录上了一些网站---》单独把cookie取出来-res.cookies是cookiejar对象,里面有get_dict()方法转换成字典-转成字典res.cookies.get_dict()#使用session发送请求,cookie自动携带sess......
  • [Leetcode Weekly Contest]351
    链接:LeetCode[Leetcode]6451.找出最大的可达成数字给你两个整数num和t。如果整数x可以在执行下述操作不超过t次的情况下变为与num相等,则称其为可达成数字:每次操作将x的值增加或减少1,同时可以选择将num的值增加或减少1。返回所有可达成数字中的最大值......
  • 7.10 requests的高级使用
    1. 自动携带cookie和session对象header={'Referer':'http://www.aa7a.cn/user.php?&ref=http%3A%2F%2Fwww.aa7a.cn%2F','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/114......
  • Ubuntu12.04 交叉编译 opencv-2.4.11过程
    1.Ubuntu换源可换源有很多,不过要下载12.04版的,好像不多。1.1先备份源sudocp/etc/apt/sources.list/etc/apt/sources.list.backup1.2由于12.04不受支持了,12.04相关的这些包的资源被移到了old-releases.ubuntu.com域名下:sudogedit/etc/apt/sources.list将下面内容插入......
  • CODE FESTIVAL 2017 Final J 题解
    problem&blog。萌萌点分治,积累个trick/qq。对于完全图\((V,E)\),将\(E\)分成\(E_1,E_2,\cdots,E_k\)(\(E_1\cupE_2\cup\cdots\cupE_k=E\))。对每个边集求MST,得到新边集\(E_1^{'},E_2^{'},\cdots,E_k^{'}\),再求MST。最终剩下的边集,等同于原边集的MST。......
  • 20230710-20230711 数论
    数论被薄纱了/kk授课老师:南京大学-朱富海教授20230710裴蜀定理对于给定不全为零的整数的\(a,b\)一定存在一对整数\(x,y\)满足\(ax+by=gcd(a,b)\)。证明:\(a==0\)\(or\)\(b==0\)显然成立;设\(gcd(a,b)=d\),即求证存在\(x,y\)满足\(ax+by=d\),等式两边同时除......
  • 【计数,DP】CF1081G Mergesort Strikes Back
    ProblemLink现有一归并排序算法,但是算法很天才,设了个递归深度上限,如果递归深度到达\(k\)则立即返回。其它部分都和正常归并排序一样,递归中点是\(\lfloor(l+r)/2\rfloor\),归并每次取两边较小者加入结果。给定\(n,k\),求用这个算法对一个均匀随机的排列\(p\)排序后,\(p\)......
  • Linux 内核0.11 系统调用详解(上)
    备注:本文通过三个问题,引出Linux内核0.11的系统调用。操作系统为什么要引出系统调用?回答这个问题前,请先参看如下图:由图可以看出,从操作系统的角度来看,一台计算机主要分为两级:用户级以及内核级,系统调用主要作用就是连接用户级和内核级的“插座”。上层用户的许多对计算机硬件的操作,......
  • C#开发ESP32E(3)Wifi配置使用
    1.安装Wifi配置库(nanoFramework.System.Device.Wifi)1.1nanoFramework.System.Device.Wifi介绍API预览--地址:https://docs.nanoframework.net/api/System.Device.Wifi.html该库可配置ESP32使用Wifi模块进行通信与Wifi建立连接有如下步骤:创建Wifi适配器扫描Wifi列表......
  • pytest + yaml 框架 -49.allure报告自定义内容
    前言v1.4.0版本支持allure报告自定义内容用例添加allure描述用例中可以通过dynamic添加以下内容allure.dynamic.featureallure.dynamic.linkallure.dynamic.issueallure.dynamic.testcaseallure.dynamic.storyallure.dynamic.titleallure.dynamic.description在t......