这些ES6用法你都会吗?

2024-09-08 15:28
文章标签 用法 frontend es6

本文主要是介绍这些ES6用法你都会吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 关于取值

取值在程序中非常常见,比如从对象obj中取值

const obj = {
a:1
b:2
c:3
d:4
}

吐槽:

const a =  obj.a;
const b =  obj.b;
const c =  obj.c;
//或者
const f =  obj.a  +  obj.b;
const g =  obj.c  +  obj.d;

改进:用ES6解构赋值

const { a,b,c,d } = obj
const f = a +b
const h = c + d
// 如果想创建的变量名和对象的属性名不一致,可以这么写
const { a : a1 } = obj  //  a1 === a
// 注意结构对象不能为 undefined null ,否者会报错,故要给被结构对象一个默认值
const  { a,b,c,d } = obj || { }

二 关于合并数据

比如合并两个数组,合并两个对象

const  a = [ 1,2,3 ];
const b=[ 1,5,6 ];
const c = a.concat(b); // [ 1,2,3,1,5,6 ]
const obj1 ={a:1}
const obj2 = {b:1,}
const obj=0bject.assign( { },obj1,obj2 ); // { a:1,b:1 }

数组合并考虑去重, 改进: ES6扩展运算符

const a = [ 1,2,3 ];
const b=[ 1,5,6 ];
const c=[...newSet([...a,...b])]; // 用 new set 去重,[1,2,3,5,6]
const obj1 = {a:1}
const obj2 = {b:1,}
const obj = {...obj1,...obj2}; // {a:1,b:1}

三 关于拼接字符串的

const name ='小明';
const score =59;
let result =' ' ;
if(score >60){ 
result =`${name}的考试成绩及格`;
} else {
result= `${name}的考试成绩不及格`;
}

改进:ES6字符串模板${ }中可以放任意的JavaScript表达式,可以进行运算以及引用对象属性

const name ='小明';
const score =59;
const result = `${ name }${ score > 60 ? `的考试成绩及格` : '的考试成绩不合格' } `;

四 关于if中判断条件

if(
type == 1 ||
type == 2 ||
type == 3 ||
type == 4 ||
){
操作...
}

**改进: SE6中数组的实例方法includes **

const condition = [ 1,2,3,4 ];
if( condition.includes( type ) ) {
操作...
}

关于列表搜索

在项目中,一些没分页的列表的搜索功能由前端来实现,搜索一般分为精确搜索和模糊搜索。搜索也要叫过滤,一般用filter来实现。

const a = [ 1,2,3,4,5 ];
const result = a.filter(item => { return item ===3 })

如果是精确搜索不会用ES6中的find吗?性能优化懂么,find方法中找到符合条件的项,不会继续遍历数组
改进

const a = [ 1,2,3,4,5 ];
const result = a.find(item =>{return item ===3})

关于扁平化数组

一个部门JSON数据中,属性名是部门id,属性值是个部门成员id数组集合,现在要把有部门的成员id都提取到一个数组集合中。

const deps ={
'采购部':[1,2,3],
'人事部':[5,8,12],
'行政部':[5,14,79],
'运输部':[3,64,105],
}
Let member=[];
// 循环嵌套去扁平化
for (let item in deps){
const value =deps[item];
if(Array.isArray(value)){
member =[...member,...value ]}}
member =[ ...new Set(member) ]

改进: ES6的flat方法,无论是二维,三维,四维都能扁平化,方便快捷

const deps ={
'采购部':[1,2,3],
'人事部':[5,8,12],
'行政部':[5,14,79],
'运输部':[3,64,105],
}
Let member = Object.values(deps).flat(Infinity);

其中使用Infinity作为flat的参数,使得无需知道被扁平化的数组的维度。
补充
flat方法不支持IE浏览器。

七 关于获取对象属性值

const name = obj && obj.name

改进

const name = obj ?.name

八 关于添加对象属性

给对象添加属性时,若属性名是动态变化的,怎么处理

let obj ={};
let index = 1;
let key =`topic${index}`;
'obj[key]= `话题内容'

改进:ES6中对象属性名可以用表达式

let obj ={};
let index = 1;
obj [ `topic${index}` ] = ' 话题内容';

九 关于输入框非空的判断

在处理输入框相关业务时,往往会判断输入框未输入值的场景。

if( value !== null  && value !== undefined && value !==''){
操作....
}

改进:ES6中的空值合并运算符

if( (value? ' ') !==' ' ){
操作...
}

十 关于异步函数

异步函数很常见,经常是用 Promise 来实现。但是容易形成回调地狱

constfn1 =()=>{
return new Promise((resolve,reject) =>{ 
setTimeout(()=>{
resolve(1);
},300);
});
}
const fn2=()=>{
return new Promise((resolve,reject) =>{
setTimeout(
()=>{resolve(2);
},600);
});
}
const fn =()=>{
fn1().then(
res1 =>{console.log(res1);//1
fn2().then(res2 =>{
console.log(res2)
})
})
}

改进

const res1= await fn1();
const res2=await fn2();
console.log(res2) // 2

**
补充
但是要做并发请求时,还是要用到Promise.all()。**

const fn =() =>{
console.log(res); //[1,2]
})
}

**
如果并发请求时,只要其中一个异步函数处理完成,就返回结果,要用到Promise.race()**

这篇关于这些ES6用法你都会吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148481

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以