八种常见的 JavaScript ES6 使用技巧_世界聚焦
给对象添加属性,名称动态变化怎么办?
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个小技巧,希望你能从中学到新的知识,也希望这些内容对你有所帮助。
关键词:
下一篇:最后一页
精心推荐
- 上海发布进一步优化调整疫情防控的相关措施-天天快资讯
- 山西汾酒12月6日获沪股通净买入2.19亿-播报
- 去年京津冀工信部门推进签约570多项高端高新项目
- 京津冀区域协同创新指数增长迅速
- 1至2月河北省工业生产平稳开局 规模以上工业增加值同比增长6.0%
- 浙江绍兴15日0-21时新增41例确诊病例
- 沈阳大气优良天数达近5年来最好水平
- 辽宁实行市级政府集中监管 首站定点冷库加强疫情防控
- 辽宁省25个博士后团队冲刺全国博士后创新创业大赛
- 安徽省宿州市埇桥区大营镇大营新村调整为中风险地区
- 云南哀牢山4名地质调查人员因公殉职原因查明
- 全国首部涉及“非现场执法”的法规施行 浦东新区打造引领区数字化城市治理样板
- 杭州一封控小区完成第三轮核酸检测 前两轮检测均为阴性
- 集采未中选药品现在怎么样了?这组数据告诉你
-
(四川统战人说统战事)“海归”博士后王暾:专注灾害预警科技创新 打通灾害预警“最后一公里” 中新网成都12月15日电 (起钰婷)“国
-
中新网福建平和12月15日电 (周晓彬 马淑惠)12月15日,福建省平和县人民法院依法宣判蔡某金等10人涉恶犯罪案件。 法院审理查明,20
-
中新网郑州12月15日电 (记者 韩章云)针对近日网友实名举报中国农业发展银行太康县支行员工夏某华吃空饷一事,中国农业发展银行河南省
-
中新网宿迁12月15日电 (记者 刘林)“房子干净又敞亮,社区漂亮又整洁。”15日,家住江苏宿迁牛角淹社区的袁有亮谈起新家,兴奋的心情
-
中新网通辽12月15日电 (记者 张林虎)15日,记者从内蒙古自治区通辽市科左后旗公安局获悉,该局打掉一个帮助网络犯罪转账的“跑分团队
X 关闭
行业排行
- 1、深圳:积极推进旅游业恢复 扎实推动经济稳定增长
- 2、保定定州提出一系列发展措施 引领体品产业向智能化品牌化高端化迈进
- 3、河北省财政厅充分发挥财政职能作用 促进交通运输事业发展
- 4、太原阳曲人才公寓项目开启施工招标工作 共有1954套人才公寓满足人才居住需求
- 5、山西出口钢构件顺利发货 为企业加强科技创新开辟了更为广阔的发展空间
- 6、上半年泰州姜堰实现新签约亿元和1000万美元以上项目95个 计划总投资208.319亿元
- 7、清华博士非洲修电站 因为他,“内卷”成为网络热词
- 8、内蒙古新增本土确诊病例3例 均在呼伦贝尔满洲里市
- 9、31省份新增新冠肺炎确诊病例67例 其中本土50例
- 10、浙江新增本土确诊病例45例 其中宁波6例、绍兴39例
X 关闭
产业
-
不用跑北京 在家门口也能挂上顶...
日前,我省首个神经疾病会诊中心——首都医科大学宣武医院河北医院...
-
“十四五”期间 河北省将优化快...
从省邮政管理局获悉,十四五期间,我省将优化快递空间布局,着力构...
-
张家口市宣化区:光伏发电站赋能...
3月19日拍摄的张家口市宣化区春光乡曹庄子村光伏发电站。张家口市宣...
-
“张同学”商标被多方抢注 涉及...
“张同学”商标被多方抢注,官方曾点名批评恶意抢注“丁真” ...
-
山东济南“防诈奶奶团”花式反诈...
中新网济南12月15日电 (李明芮)“老有所为 无私奉献 志愿服...
-
广州新增1例境外输入关联无症状...
广州卫健委今日通报,2021年12月15日,在对入境转运专班工作人...
-
西安报告初筛阳性病例转为确诊病例
12月15日10:20,经陕西西安市级专家组会诊,西安市报告新冠病毒...
-
广东东莞新增本土确诊病例2例 ...
(抗击新冠肺炎)广东东莞新增本土确诊病例2例 全市全员核酸检测...
-
中缅边境临沧:民警深夜出击捣毁...
中新网临沧12月15日电 (胡波 邱珺珲)记者15日从云南临沧边境...
-
“土家鼓王”彭承金:致力传承土...
中新网恩施12月15日电 题:“土家鼓王”彭承金:致力传承土家...