ES10:Object.fromEntries()、String.prototype.trim()、Array.prototype.flat()、Array.prototype.flatMap()

2024-03-17 16:18

本文主要是介绍ES10:Object.fromEntries()、String.prototype.trim()、Array.prototype.flat()、Array.prototype.flatMap(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Object.fromEntries(iterable)

  • 把键值对列表(二维数组)转换为一个对象,这个方法和 Object.entries() 相对
Object.fromEntries([['foo', 1],['bar', 2]
])

Object.entries(obj)

  • 返回一个给定对象自身可枚举属性的键值对数组
Object.entries({foo: 1, bar: 2})

 延展:Object.keys()、Object.values()、Object.entries() 结合 for...of 使用

const obj = {one: 1, two: 2}
for(let item of Object.keys(obj)){console.log(item)
}
for(let item of Object.values(obj)){console.log(item)
}
for(let item of Object.entries(obj)){console.log(item)
}

Object 转换操作

  • Object.entries() 对象转换成一个二维数组
const obj = {name: 'imooc',course: 'es'
}
const entries = Object.entries(obj)
console.log(entries)

  

  • 把二维数组转换成一个对象,二维数组本质上是以数组作为数组元素的数组
// ES10
const fromEntries = Object.fromEntries(entries)
console.log(fromEntries)

 

Map 转 Object

const map = new Map()
map.set('name', 'imooc')
map.set('course', 'es')
console.log(map)const obj = Object.fromEntries(map)
console.log(obj)

 

过滤

  • course 表示所有课程,求课程分数大于 80 的课程组成的对象
const course = {math: 80,english: 85,chinese: 90
}
/** 方法一 */
const res = Object.entries(course).filter(([key, val]) => val > 80)
const obj1 = Object.fromEntries(res)
console.log(obj1)/** 方法二 */
const obj = {}
for(let item of Object.entries(course)){if(item[1] > 80){obj[item[0]] = item[1]}
}
console.log(obj)

String 扩展

  • String.prototype.trimStart() 方法删除字符串开头空格
  • String.prototype.trimEnd() 方法删除字符串结尾空格
  • String.prototype.trim() 方法删除字符串首尾空格
String.prototype.trimLeft.name == 'trimStart' // true
String.prototype.trimRight.name == 'trimEnd' // true
  • trimLeft / trimRight 是 trimStart / trimEnd 的别名
  • 可以在控制台中打印 String.prototype 查看

Array 扩展

Array.prototype.flat(depth)

  • 按照一个可指定的深度递归遍历数组
  • 将所有元素与遍历到的子数组中的元素合并为一个新数组返回
  • depth 深度默认值为 1
const numbers = [1, 2, [3, 4, [5, 6]]]
console.log(numbers.flat())
// [1, 2, 3, 4, [5, 6]]const numbers = [1, 2, [3, 4, [5, 6]]]
console.log(numbers.flat(2))
// [1, 2, 3, 4, 5, 6]

Array.prototype.flatMap()

  • 使用映射函数映射每个元素,然后将结果压缩成一个新数组返回
  • 以看出来它包含两部分功能一个是 map,一个是 flat(深度为1)
const numbers = [1, 2, 3]
numbers.map(x => [x * 2]) // [[2], [4], [6]]
numbers.flatMap(x => [x * 2]) // [2, 4, 6]
let arr = ['今天天气不错', '', '早上好']
arr.map(s => s.split(''))
// [["今", "天", "天", "气", "不", "错"],[""],["早", "上", "好"]]
arr.flatMap(s => s.split(''))
// ["今", "天", "天", "气", "不", "错", "", "早", "上", "好"]
  •  String.prototype.split() 把一个字符串分割成字符串数组,返回一个字符串数组
  • 空字符串('')分隔每个元素

Function.prototype.toString()

  • 函数是对象,并且每个对象都有一个 .toString() 方法
  • 因为它最初存在于Object.prototype.toString() 上
  • 所有对象(包括函数)都是通过基于原型的类继承从它继承的
  • Function.prototype.toString() 方法返回一个表示当前函数源代码的字符串;这意味着还将返回注释、空格和语法详细信息
  • 可以理解成原封原样返回函数源代码字符串
function foo() {// es10新特性console.log('imooc')
}
console.log(foo.toString())// 直接在方法名toString()
console.log(Number.parseInt.toString())

可选的 Catch Binding

  • 在 ES10 之前我们都是这样捕获异常
try {// tryCode
} catch (err) {// catchCode
}
  • 在这里 err 是必须的参数,在 ES10 可以省略这个参数
try {console.log('Foobar')
} catch {console.error('Bar')
}
  • 案例:验证参数是否为 json 格式;这个需求我们只需要返回 true 或 false,并不关心 catch 的参数
const validJSON = json => {try {JSON.parse(json)return true} catch {return false}
}const json = '{"name":"imooc", "course": "es"}'
console.log(validJSON(json)) // true

JSON 扩展

  • JSON.stringify() 把一个字符串解析成一个 JSON 字符串
  • JSON.parse() 把一个 JSON 字符串解析成一个对象
const obj = {math: 80,english: 85,chinese: 90
}
const jsonStr = JSON.stringify(obj)
console.log(jsonStr)
const jsonObj = JSON.parse(jsonStr)
console.log(jsonObj)

这篇关于ES10:Object.fromEntries()、String.prototype.trim()、Array.prototype.flat()、Array.prototype.flatMap()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/819471

相关文章

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

C# string转unicode字符的实现

《C#string转unicode字符的实现》本文主要介绍了C#string转unicode字符的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1. 获取字符串中每个字符的 Unicode 值示例代码:输出:2. 将 Unicode 值格式化

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W