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

相关文章

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

glShadeModel函数 GL_SMOOTH与GL_FLAT的区别

glShadeModel函数用于控制opengl中绘制指定两点间其他点颜色的过渡模式 参数一般为GL_SMOOTH(默认),GL_FLAT opengl默认是将制定的两点颜色进行插值,绘制之间的其他点 如果两点的颜色相同,使用两个参数效果相同 如果两点颜色不同,GL_SMOOTH会出现过渡效果,GL_FLAT 则只是以指定的某一点的单一色绘制其他所有点 如图可以对比GL_SM

hdu2072(string的应用)

单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25447    Accepted Submission(s): 5957 Problem Description lily的好朋友xiaoou333最近很空,他

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

【uva】11536-Smallest Sub-Array(区间移动问题)

一个区间移动的问题,1A了,感觉没什么好说的。。 13975926 11536 Smallest Sub-Array Accepted C++ 0.809 2014-08-01 11:00:20 #include<cstdio>#include<cstring>#include<iostream>using namespace std;#define INF 1 << 30

【UVA】10739 - String to Palindrome(动态规划)

比较水的动态规划 dp[i][j] 将原串 i ~ j 之内的字符转化为回文字符所需要的最小操作次数 其中删除操作和添加操作本质上是一样的。 三个状态转移方程: dp[i][j] = min(dp[i][j] ,dp[i + 1][j]); dp[i][j] = min(dp[i][j] ,dp[i + 1][j - 1]); dp[i][j] = min(dp[i][j] ,dp[

理解String的compareTo()方法返回值

compareTo()的返回值是整型,它是先比较对应字符的大小(ASCII码顺序), 如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值。 如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符作比较, 以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。 我们可以通过阅读源码加深对compareTo()的理解: comp

【JavaScript】基本数据类型与引用数据类型区别(及为什么String、Boolean、Number基本数据类型会有属性和方法?)

基本数据类型   JavaScript基本数据类型包括:undefined、null、number、boolean、string。基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值。 1)基本数据类型的值是不可变的 任何方法都无法改变一个基本类型的值,比如一个字符串: var name = "change";name.substr();//hangconsole.log

【JavaScript】如何模拟一个flat

首先了解下flat的概念 Array.prototype.flat() - JavaScript | MDN 将数组元素展开一层 1、concat + 扩展运算符 const arr = [1, 2, 4, [1, 2, [1, 3, [1, 2, 3]]], 5];// 扩展运算符 + concat[].concat