给对象添加属性,名称动态变化怎么办?
let obj = {};let index = 1;let key = `topic${index}`;obj[key] = "topic";
为什么要创建一个额外的变量?
你不知道 ES6 中的对象属性名可以使用表达式吗?
【资料图】
改进后:
let obj = {};let index = 1;obj[`topic${index}`] = "topic";
2.列表搜索在正式的项目开发中,前端一般负责实现一些没有分页的列表的搜索功能。
搜索一般分为精确搜索和模糊搜索,搜索也叫过滤。
一种是模糊搜索,一般用过滤器来实现:
const a = [1, 2, 3, 4, 5]const result = a.filter((item) => { return item === 3})console.log("result", result)
但是,如果是精确搜索,则需要使用ES6中的find
const a = [1,2,3,4,5];const result = a.find( item =>{ return item === 3 })
3.获取对象属性值const name = obj && obj.name
你可以在 ES6 中使用可选的链接运算符:
const name = obj?.name
4. 展平数组在开发ERP系统或者人事管理系统的过程中,经常会遇到一个应用场景。
一个部门的JSON数据中,属性名是部门id,属性值是部门成员id的数组集合。现在的需求是将部门的所有成员id提取到一个数组集合中。
const deps = {"data01":[1,2,3],"data02":[5,8,12],"data03":[5,14,79],"data04":[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)]
这时候,我好像听到前端组长开始骂了:
还需要遍历得到对象的所有属性值吗?性能优化好不好,Object.values忘记了?以前没用过 ES6?还有涉及到数组的扁平化过程,为什么不使用ES6提供的扁平化方法呢?
const deps = {"data01":[1,2,3],"data02":[5,8,12],"data03":[5,14,79],"data04":[3,64,105],}let member = Object.values(deps).flat(Infinity);
Infinity 用作平面参数,因此您不需要知道平面数组的维度。
5.if中的判断语句if( type == 1 || type == 2 || type == 3 || type == 4 ||){ //...}
改进后可简写为:
const condition = [1, 2, 3, 4]const type = 11if (condition.includes(type)) { console.log("ok") }
6.判断输入框不为空在日常开发中,无论PC端还是移动端,在处理与输入框相关的业务时,往往会判断输入框没有输入值。
if(value !== null && value !== undefined && value !== ""){ //...}
可以改进为:
if((value??"") !== ""){ //...}
是不是省了很多代码,惊喜还是意外?
7.获取对象属性值const name = obj && obj.name
改进后:
const name = obj?.name
8.异步函数异步函数很常见,直接上示例:
fconst fn1 = () =>{ 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 fn = async () =>{ const res1 = await fn1(); const res2 = await fn2(); console.log(res1);// 1 console.log(res2);// 2}
代码一下子简洁了许多,总算松了一口气。
如果是并发请求,可以使用Promise.all()
const fn = () =>{ Promise.all([fn1(),fn2()]).then(res =>{ console.log(res);// [1,2] }) }
最后以上就是我今天想与你分享的8个小技巧,希望你能从中学到新的知识,也希望这些内容对你有所帮助。
下一篇:最后一页
X 关闭
-
八种常见的 JavaScript ES6 使用技巧_世界聚焦
1 添加对象属性值给对象添加属性,名称动态变化怎么办?letobj={};letindex=1;letkey=`topic${index}`;
-
【天天热闻】和远气体5月29日快速上涨
以下是和远气体在北京时间5月29日10:00分盘口异动快照:5月29日,和远气体盘中快速上涨,5分钟内涨幅超过2%
-
全球观焦点:2023端午节手机祝福语10句
1、端午节到了,送你一个“艾香粽”,芳香四溢;送你一个“薄荷香粽”,凉爽夏日;送你一个“莲子粽”,身
-
首次!中国银联,超越Visa|全球播资讯
根据尼尔森公布的最新报告,2022年银联借记卡的交易份额首次超过了Visa。同时,自2011年至2021年,Visa的借
- 1深圳:积极推进旅游业恢复 扎实推动经济稳定增长
- 2保定定州提出一系列发展措施 引领体品产业向智能化品牌化高端化迈进
- 3河北省财政厅充分发挥财政职能作用 促进交通运输事业发展
- 4太原阳曲人才公寓项目开启施工招标工作 共有1954套人才公寓满足人才居住需求
- 5山西出口钢构件顺利发货 为企业加强科技创新开辟了更为广阔的发展空间
- 6上半年泰州姜堰实现新签约亿元和1000万美元以上项目95个 计划总投资208.319亿元
- 7清华博士非洲修电站 因为他,“内卷”成为网络热词
- 8内蒙古新增本土确诊病例3例 均在呼伦贝尔满洲里市
- 931省份新增新冠肺炎确诊病例67例 其中本土50例
- 10浙江新增本土确诊病例45例 其中宁波6例、绍兴39例