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

相关文章

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

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. 初始化二