一行代码就能完成的事情,为什么要写两行

news2024/11/26 16:21:55

今天休息休息,复习一下使用的简洁运算方式以及常用的单行代码

三元运算符

用三元运算符代替简单的if else

if (age < 18) {
  me = '小姐姐';
} else {
  me = '老阿姨';
} 

改用三元运算符,一行就能搞定

me = age < 18 ? '小姐姐' : '老阿姨'; 

复杂的判断三元运算符就有点不简单易懂了

const you = "董员外"
const your = "菜鸡本鸡"
const me = you ?"点再看":your?"点赞":"分享" 

判断

当需要判断的情况不止一个时,第一个想法就是使用 || 或运算符

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

ES6中的includes一行就能搞定

if( [1,2,3,4,5].includes(type) ){
   //...
} 

取值

在写代码的时候,经常会用到取值的操作

const obj = {
    a:1,
    b:2,
    c:3,
}
//老的取值方式
const a = obj.a;
const b = obj.b;
const c = obj.c; 

老的取值方式,直接用对象名加属性名去取值。如果使用ES6的解构赋值一行就能搞定

const {a,b,c} = obj; 

获取对象属性值

在编程的过程中经常会遇到获取一个值并赋给另一个变量的情况,在获取这个值时需要先判断一下这个对象是否存在,才能进行赋值

if(obj && obj.name){
  const name = obj.name
} 

ES6提供了可选连操作符?.,可以简化操作

const name = obj?.name; 

反转字符串

将一个字符串进行翻转操作,返回翻转后的字符串

const reverse = str => str.split('').reverse().join('');

reverse('hello world');   // 'dlrow olleh' 

生成随机字符串

生成一个随机的字符串,包含字母和数字

const randomString = () => Math.random().toString(36).slice(2);
//函数调用
randomString(); 

数组去重

用于移除数组中的重复项

const unique = (arr) => [...new Set(arr)];

console.log(unique([1, 2, 2, 2, 3, 4, 4, 5, 6, 6])); 

数组对象去重

去除重复的对象,对象的key值和value值都分别相等,才叫相同对象

const uniqueObj = (arr, fn) =>arr.reduce((acc, v) => {if (!acc.some(x => fn(v, x))) acc.push(v);return acc;}, []);
 
uniqueObj([{id: 1, name: '大师兄'}, {id: 2, name: '小师妹'}, {id: 1, name: '大师兄'}], (a, b) => a.id == b.id)
// [{id: 1, name: '大师兄'}, {id: 2, name: '小师妹'}] 

合并数据

当我们需要合并数据,并且去除重复值时,你是不是要用for循环? ES6的扩展运算符一行就能搞定!!!

const a = [1,2,3];
const b = [1,5,6];
const c = [...new Set([...a,...b])];//[1,2,3,5,6] 

判断数组是否为空

判断一个数组是否为空数组,它将返回一个布尔值

const notEmpty = arr => Array.isArray(arr) && arr.length > 0;

notEmpty([1, 2, 3]);  // true 

交换两个变量

//旧写法
let a=1;
let b=2;
let temp;
temp=a
a=b
b=temp

//新写法
[a, b] = [b, a]; 

判断奇还是偶

const isEven = num => num % 2 === 0;

isEven(996); 

获取两个数之间的随机整数

const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);

random(1, 50); 

检查日期是否为工作日

传入日期,判断是否是工作日

const isWeekday = (date) => date.getDay() % 6 !== 0;
console.log(isWeekday(new Date(2021, 11, 11)));
// false 
console.log(isWeekday(new Date(2021, 11, 13)));
// true 

高级

滚动到页面顶部

不用引入element-ui等框架,一行代码就能实现滚动到顶部

const goToTop = () => window.scrollTo(0, 0);
goToTop(); 

浏览器是否支持触摸事件

通过判断浏览器是否有ontouchstart事件来判断是否支持触摸

const touchSupported = () => {
  ('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch);
}
console.log(touchSupported()); 

当前设备是否为苹果设备

前端经常要兼容andriod和ios

const isAppleDevice = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
console.log(isAppleDevice);
// Result: will return true if user is on an Apple device 

复制内容到剪切板

使用 navigator.clipboard.writeText 来实现将文本复制到剪贴板

const copyToClipboard = (text) => navigator.clipboard.writeText(text);

copyToClipboard("双十一来了~"); 

检测是否是黑暗模式

用于检测当前的环境是否是黑暗模式,返回一个布尔值

const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches

console.log(isDarkMode) 

网站变成黑白

有时候网站在某种特定的情况下,需要使整个网站变成黑白的颜色

filter:grayscale(100%) 

只需要将这一行代码filter:grayscale(100%)放到body上,一下就能致黑

一行代码就能完成的事情,凭什么写两行!!!

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这才是最适合新手的python教程(最新版python3.10)

前言 这几年&#xff0c;Python 凭借着语法简洁、跨平台、类库丰富、可扩展、开放源码等特点&#xff0c;成为了 AI 和机器学习时代的第一编程语言。甚至击破铁三角&#xff08; Java、C、C&#xff09;的架构&#xff0c;荣登 TIOBE 榜单的榜首。 身边有不少程序员都选择 Pyt…

LEADTOOLS 入门教程: 检测和提取条形码 - .NET Core

LEADTOOLS是一个综合工具包的集合&#xff0c;用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中&#xff0c;是一项企业级文档自动化解决方案&#xff0c;有捕捉&#xff0c;OCR&#xff0c;OMR&#xff0c;表单识别和处理&#x…

漏洞丨PDF Explorer 1.5.66.2 - Buffer Overflow

作者&#xff1a;黑蛋 一、漏洞简介 这是一个栈溢出漏洞&#xff0c;一个叫PDF Explorer的软件&#xff08;干嘛的咱没必要知道&#xff09;&#xff0c;他对于用户输入内容长度没有限制造成栈溢出漏洞。 二、漏洞环境 虚拟机 目标程序 调试器 win7x86 PDF Explorer x32…

NeurIPS 2022 | MoVQ: 基于Modulating Quantized Vectors的高保真图像生成

原文标题&#xff1a;MoVQ: Modulating Quantized Vectors for High-Fidelity Image Generation 一、问题提出 虽然两级Vector Quantized (VQ)【指VQVAE-2】生成模型允许合成高保真和高分辨率图像&#xff0c;但它们的量化操作符将图像中的相似patch编码到相同的索引中&#…

2023年MBA联考英语(二)大作文:关于某高校大学生的十大主题

2023年管理类联考倒计时9天&#xff01;在历年的联考英语二作文主题中&#xff0c;大学生群体是时长会出现一期的&#xff0c;这既是对联考中部分专业涉及大学生群体的一种反映&#xff0c;也是因为这个群体的话题对大多数考生来讲都相对熟悉&#xff0c;毕竟都是从这个阶段经历…

世界杯竞猜项目Dapp-第四章(subgraph)

subgraph 是什么 subgraph 索引协议作为 Dapp 领域最重要的基建之一&#xff08;如 uniswap、wave 等都在使用&#xff09;&#xff0c;主要用来做链上数据索引&#xff0c;即在链下对链上事件进行捕捉&#xff08;扫链、计算、存储&#xff09;&#xff0c;然后可对存储下来的…

CAN总线学习笔记 | CAN盒测试STM32的CAN中断接收

CAN基础知识介绍文中介绍了CAN协议的基础知识&#xff0c;以及STM32F4芯片的CAN控制器相关知识&#xff0c;下面将通过实例&#xff0c;利用STM32CubeMX图形化配置工具&#xff0c;并配合CAN盒&#xff0c;来实现CAN通讯的中断收发测试 一、STM32CubeMX配置 CAN是挂载在APB1总…

《钱进球场》:球场争锋·棒球1号位

动画《钱进球场》改编自森高夕次原作、足立刑事著同名体育漫画&#xff0c;于2017年3月宣布动画化 &#xff0c;由STUDIO DEEN负责动画制作&#xff0c;于2018年4月6日起播出。动画第二期于2018年10月5日开始播出。全24话。 中文名 钱进球场 原版名称 グラゼニ 动画制作 Stud…

pytorch 生成手写数字图像

生成对抗网络的概念 最基本的GAN模型由一个生成器 G 和判别器 D 组成。生成器用于生成假样本&#xff0c;判别器用于判断样本是真实的还是假的。 生成器(Generator)&#xff1a;通过机器生成数据&#xff08;大部分情况下是图像&#xff09;&#xff0c;目的是“骗过”判别器…

jQuery - AJAX 简介

什么是 AJAX&#xff1f; AJAX 异步 JavaScript 和 XML&#xff08;Asynchronous JavaScript and XML&#xff09;。 简短地说&#xff0c;在不重载整个网页的情况下&#xff0c;AJAX 通过后台加载数据&#xff0c;并在网页上进行显示。 使用 AJAX 的应用程序案例&#xff…

个人简介网页设计作业 静态HTML个人介绍网页作业 DW个人网站模板下载 WEB静态大学生简单网页 个人网页作品代码 个人网页制作 学生个人网页

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[附源码]Nodejs计算机毕业设计基于百度AI平台的财税报销系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Redis中BIO、NIO、IO多路复用

1 BIO(阻塞IO) 阻塞IO就是两个阶段都必须阻塞等待 通常IO操作都是阻塞I/O的&#xff0c;也就是说当你调用read时&#xff0c;如果没有数据收到&#xff0c;那么线程或者进程就会被挂起&#xff0c;直到收到数据。 read直到数据复制到应用进程的缓冲区或者发生错误才会返回&am…

【数据结构与算法】第十六篇:图论(基础篇)

知识导航图形结构的引进图&#xff08;Grapth&#xff09;1.图的概念与应用2.有向图入度&#xff0c;出度3.无向图4.完全图无向完全图有向完全图5.连通图6.连通分量强连通分量图的实现方案1.邻接矩阵实现法2.邻接表实现法3.两种方法对比分析图形结构的引进 &#x1f30e; 数据…

Linux基础-目录操作

该文章主要为完成实训任务及总结&#xff0c;详细实现过程及结果见【参考文章】 参考文章&#xff1a;https://howard2005.blog.csdn.net/article/details/126962205 文章目录一、常用权限操作1.1 常用权限操作1. chgrp命令2. chown命令3. chmod命令1.2 权限操作实战任务1 创建…

14、Redis_主从复制

文章目录14、Redis_主从复制14.1 是什么14.2. 能干嘛14.3 怎么玩&#xff1a;主从复制14.3.1 新建redis6379.conf&#xff0c;填写以下内容14.3.2 新建redis6380.conf&#xff0c;填写以下内容14.3.3 新建redis6381.conf&#xff0c;填写以下内容14.3.4 启动三台redis服务器14.…

java项目_第173期ssm高校二手交易平台_计算机毕业设计

java项目_第173期ssm高校二手交易平台_计算机毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm高校二手交易平台》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台商品&#xff0c;并且进行购买商品&#xff0c;并在 个人后台查看自己的订单、查看商品…

DPDK源码分析之DPDK技术简介

Cache和内存技术 1. Cache一致性 多核处理器同时访问同一段cacheline时&#xff0c;会出现写回冲突的情况&#xff0c;操作系统解决这个问题会消耗一部分性能&#xff0c;DPDK采用了两个技术来解决这个问题&#xff1a; 对于共享的数据&#xff0c;每个核都定义自己的备份lc…

区块链学习2-合约开发

概述 智能合约本质上是运行在某种环境&#xff08;例如虚拟机&#xff09;中的一段代码逻辑。 长安链的智能合约是运行在长安链上的一组“动态代码”&#xff0c;类似于Fabric的chaincode&#xff0c;Fabric的智能合约称为链码&#xff08;chaincode&#xff09;&#xff0c;…

对氯间二甲苯酚在活性污泥发酵过程中重塑ARGs的机制类别

2022年8月&#xff0c;凌恩生物客户河海大学罗景阳教授团队在《Science of the Total Environment》期刊上发表研究论文“Para-chloro-meta-xylenol reshaped the fates of antibiotic resistance genes during sludge fermentation: Insights of cell membrane permeability, …