当前位置: 首页 > news >正文

前端开发总结的一些技巧和实用方法

本文主要介绍一些JS中用到的小技巧和实用方法,可以在日常Coding中提升幸福度,也可以通过一些小细节来增加代码可读性,让代码看起来更加优雅,后续将不断更新

1.数组 map 的方法 (不使用Array.Map)

Array.from 还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。如下:

const cities = [ { name: 'Paris', visited: 'no' }, { name: 'Lyon', visited: 'no' }, { name: 'Marseille', visited: 'yes' }, { name: 'Rome', visited: 'yes' }, { name: 'Milan', visited: 'no' }, { name: 'Palermo', visited: 'yes' }, { name: 'Genoa', visited: 'yes' }, { name: 'Berlin', visited: 'no' }, { name: 'Hamburg', visited: 'yes' }, { name: 'New York', visited: 'yes' } ]; const cityNames = Array.from(cities, ({ name}) => name); console.log(cityNames); //["Paris", "Lyon", "Marseille", "Rome", "Milan", "Palermo", "Genoa", "Berlin", "Hamburg", "New York"]

2.有条件的对象属性

不再需要根据一个条件创建两个不同的对象,可以使用展开运算符号来处理。

let getUser = (emailIncluded) => { return { name: 'John', surname: 'Doe', ...emailIncluded && { email : 'john@doe.com' } } } const user = getUser(true); console.log(user); // outputs { name: "John", surname: "Doe", email: "john@doe.com" } const userWithoutEmail = getUser(false); console.log(userWithoutEmail); // outputs { name: "John", surname: "Doe" }

3. 动态属性名

const dynamic = 'email'; let user = { name: 'John', [dynamic]: 'john@doe.com' } console.log(user); // outputs { name: "John", email: "john@doe.com" }

4.函数默认参数妙用

场景:假设我们又如下的初始化工作需要进行,在代码的最开始我们需要对config对象进行初始化工作

function initConfig(config) { config.map((item) => { item.content = Number(item.content) }) }

如果我们不小心忘记给它传递参数,浏览器会报如下错误,提示我们 config 没有 map 方法,因为此时 config 为 undefined

解决办法:

我们可以给函数的参数加上一个默认的值

function initConfig(config = []) { config.map((item) => { item.content = Number(item.content) }) }

5.监听DOM元素是否在可视区域内

场景:如果打开网页,DOM元素在可视区域内,就不展示一个div,反之如果需要滑动网页才能让这个DOM元素出现在可视区域,就展示这个div。这里分享一个vue的做法。

mounted(){ let recommend = document.getElementById('replyList'),that = this; let observer = new IntersectionObserver(function(entries){ entries.forEach( function(element, index) { if (element.isIntersecting ) { //用recommendShow这个布尔值来控制DOM是否显示 that.recommendShow = false; } else { that.recommendShow = true; } }); }, { root: null, threshold:[0, 1] }); observer.observe(recommend) }

16.谷歌浏览器A标签跳转新标签导致sessionStorage无效

解决方法:主动添加 rel=“opener” 属性即可,如下。

<a href="" rel="opener"></a>

17.Array.find

如果你曾经编写过普通 JavaScript 中的 find 函数,那么你可能使用了 for 循环。在 ES6 中,介绍了一种名为 find()的新数组函数,可以实现 for 循环的简写。

const pets = [ { type: 'Dog', name: 'Max'}, { type: 'Cat', name: 'Karl'}, { type: 'Dog', name: 'Tommy'}, ] function findDog(name) { for(let i = 0; i

简写为

let = pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy'); console.log(pet); // { type: 'Dog', name: 'Tommy' }

8.数组提取不重复的新值

如果有下面两个数组,需要提取第二个中与第一个数组中不重复的新值,也就是单独把5,6提取出来

let arr1 = [1,2,3]; let arr2 = [2,5,6]; let arr3 = []; arr2.forEach(item=>{ if(!arr1.includes(item)){ arr3.push(item); } }) console.log(arr3);//[5,6]

Git仓库:https://gitee.com/ZhongBangKeJi/CRMEB

http://www.jsqmd.com/news/304941/

相关文章:

  • 全网最全本科生必看TOP10 AI论文工具测评
  • leetcode 1200
  • 一个程序模拟 直流绝缘监测仪,一个程序模拟 直流绝缘监测仪上位机
  • S7-1500作控制器S7-200SMART作智能设备
  • 低空经济新实践:无人机如何革新光伏电站巡检
  • DCDC同步降压:RT7272BGSP同步降压设计详解
  • 【2026最新】Directx dll修复工具是什么?DirectX修复工具下载保姆图文教程(附官网安装包),dll修复工具,一键解决dll文件丢失、c++异常、软件打不开等问题
  • 14-机器学习与大模型制作数学教程-第1章 1-6 费马定理与极值判定
  • P1024 [NOIP 2001 提高组] 一元三次方程求解(1.26)
  • EDC电子试验记录本,数字化科研时代的效率革命
  • linux查询进程
  • python-Dgango项目收集静态文件、构建前端、安装依赖
  • 实用指南:【C++初阶】vector容器的模拟实现,各接口讲解
  • Linux、Windows常用命令
  • 2026年1月26日
  • 2026年地坪漆国内TOP十大品牌推荐:从技术实力到场景适配的专业选型指南
  • 生物等效性试验电子化记录,开启药品研发的智能合规新时代
  • 2026年地坪漆厂家配套固化剂品牌推荐:从适配性到稳定性的全维度选型指南
  • Docker常用命令
  • 生物等效性电子试验记录,数字化工具如何重塑药物研发新范式
  • 揭秘电子试验记录如何保障生物等效性,从数据基石到智能未来
  • EDC电子试验记录,现代科研的数字化革命与七大工具横评
  • 冥想第一千七百七十五天(1775)
  • 中国象棋 算棋不求
  • 环境检测LIMS系统:LIMS如何将环境检测实验室从“经验驱动”转向“数据决策”?
  • AI营销专家原圈科技:从ROI提升300%看AI营销变革
  • AI营销专家榜首揭晓:原圈科技如何实现300% ROI增长?
  • NX MCD时序仿真的学习模板,包涵运行时参数,运行时表达式,条件仿真序列的编写等等。 关键是...
  • 强烈安利10个AI论文软件,专科生毕业论文写作神器!
  • MATLAB代码:基于粒子群算法的储能优化配置(可加入风光机组) 关键词:储能优化配置 粒子群...