首页 > 编程语言 >常用JavaScript 单行代码

常用JavaScript 单行代码

时间:2024-12-05 09:43:39浏览次数:5  
标签:arr const name 代码 JavaScript value 单行 key age

1. 不使用临时变量来交换变量的值

例如我们想要将 a 于 b 的值交换

let a = 1, b = 2; // 交换值 [a, b] = [b, a]; // 结果: a = 2, b = 1

2. 对象解构,让数据访问更便捷

const { name, age } = { name: '张三', age: 23 };

// 结果: name = '张三', age = 23

3. 浅克隆对象

const originalObj = { name: '张三', age: 24 };

const clonedObj = { ...originalObj };

// 结果: clonedObj = { name: '张三', age: 24 }
// 此时改变 clonedObj 的属性,将不会影响到原始对象 originalObj

4. 合并对象

const obj1 = { name: '张三' };
const obj2 = { age: 22 };

const mergedObj = { ...obj1, ...obj2 };

// 结果: mergedObj = { name: '张三', age: 22 }

5. 清理数组

const arr = [ 0, 1, false, 2, '', 3 ];

const cleanedArray = arr.filter(Boolean);

// 结果: cleanedArray = [1, 2, 3]

6. 将 NodeList 转换为数组

const nodesArray = [ ...document.querySelectorAll('div') ];
//通过扩展运算符将NodeList( document.querySelectorAll函数的返回值) 转换为 JavaScript 数组,从而能够使用数组的map方法filter去操作查找到的元素。

7. 检查数组是否满足指定条件

const arr = [ 1, 2, 3, -5, 4 ];

// 数组中是否有负数
const hasNegativeNumbers = arr.some(num => num < 0);

// 结果: hasNegativeNumbers = true

8. 将文本复制到剪贴板

navigator.clipboard.writeText('Text to copy');
//通过使用 Clipboard API 以编程方式将文本复制到剪贴板。这是一种最新的复制方法,可让文本复制变得无缝且高效(但目前各大浏览器支持度还不是很高,需要考虑兼容性问题)。

9. 删除数组重复项

const arr = [1, 2, 2, 3, 4, 4, 5];

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

// 结果: unique = [1, 2, 3, 4, 5]

10. 取两个数组的交集

const arr1 = [1, 2, 3, 4];
const arr2 = [2, 4, 6, 8];

// 取两个数组中公共的元素
const intersection = arr1.filter(value => arr2.includes(value));

// 结果: intersection = [2, 4]

11. 求数组元素的总和

const arr = [1, 2, 3, 4];

// 求总和
const sum = arr.reduce((total, value) => total + value, 0);

// 结果: sum = 10

12. 根据指定条件判断,是否给对象的属性赋值

const condition = true;
const value = '你好,世界';

// 如果条件为真,则将 value 变量的值赋给 newObject.key 属性
const newObject = {...(condition && {key: value})};

// 结果: newObject = { key: '你好,世界' }

13. 使用变量作为对象的键

const dynamicKey = 'name';
const value = '张三';

// 使用一个动态的变量作为 key
const obj = {[dynamicKey]: value};

// 结果: obj = { name: '张三' }

14. 离开页面弹出确认对话框

window.onbeforeunload = () => '你确定要离开吗?';

15. 对象数组,根据对象的某个key求对应值的总和

const arrayOfObjects = [{x: 1}, {x: 2}, {x: 3}];

// 指定要求和的 key值
const sumBy = (arr, key) => arr.reduce((acc, obj) => acc + obj[key], 0);

// 传入 'x',求元素对象 key 为 'x' 的值的总和
sumBy(arrayOfObjects, 'x'));

// 结果: 6

16. 将 url 问号后面的查询字符串转为对象

const query = 'name=John&age=30';

// 将字符串解析为对象
const parseQuery = query => Object.fromEntries(new URLSearchParams(query));

// 结果: parseQuery = { name: 'John', age: '30' }

17. 将秒数转换为时间格式的字符串

const seconds = 3661; // 一小时是 3600 秒,多出 61 秒

const toTimeString = seconds => new Date(seconds * 1000).toISOString().substr(11, 8);

toTimeString(seconds));

// 结果: '01:01:01'

18. 求某对象所有属性值的最大值

// 数学、语文、英语成绩
const scores = { math: 95, chinese: 99, english: 88 };

const maxObjectValue = obj => Math.max(...Object.values(obj));

// 最高分
maxObjectValue(scores));

// 结果: 99

19. 判断对象的值中是否包含有某个值

const person = { name: '张三', age: 30 };

const hasValue = (obj, value) => Object.values(obj).includes(value);

hasValue(person, 30);

// 结果: true

20. 安全访问深度嵌套的对象属性

const user = { profile: { name: '张三' } };

const userName = user.profile?.name ?? '匿名';

// 结果: userName = '张三'

//此代码首先演示了如何使用可选链运算符 (?.) 安全地访问user.profile的name值。如果user.profile是undefined或null,它会短路并返回undefined,从而避免潜在的类型错误TypeError。 //然后,使用空值合并运算符 (??) 检查左侧是否为null或undefined,如果是,则使用默认值'匿名'。这可确保后备值不会是其他假值(如''或0)。这对于访问数据结构中可能不存在某些中间属性的深层嵌套属性非常有用。 //在 JavaScript 中,空值合并运算符 (??) 和逻辑或 (||) 都可以用于提供默认值,但它们处理假值的方式有所不同。 //在上面的例子中,如果把??改为||,行为会稍微有些不同。||的左侧如果为假值,它将会返回右侧的值。JavaScript 中的假值包括null、undefined、0、NaN、''(空字符串)和false。这意味着||左边的值不仅仅是null或undefined,如果还是其他假值,那么都将返回右侧的值。

21. 创建包含值为指定数字范围的数组

const range = Array.from({ length: 5 }, (_, i) => i + 1);

// 结果: range = [1, 2, 3, 4, 5]

22. 提取文件扩展名

const fileName = 'example.png';

const getFileExtension = str => str.slice(((str.lastIndexOf(".") - 1) >>> 0) + 2);

// 结果: getFileExtension = 'png'
从字符串中提取文件扩展名。它先找到最后一次出现点号 (.) 位置,然后截取从该位置到末尾的字符串。位运算符 (>>>) 确保了即使未找到点号 (.) ,操作也是安全的,因为在这种情况下仍然会返回一个空字符串。

23. 切换元素的 class

const element = document.querySelector('.my-element');

const toggleClass = (el, className) => el.classList.toggle(className);

toggleClass(element, 'active');

//toggleClass函数使用classList.toggle()方法从一个元素的 class 列表中添加或移除某个 class。如果该 class 存在,则删除,否则添加。这是一种根据用户交互或应用程序状态动态更新 class 的方法。非常适合实现响应式设计元素,例如菜单根据用户操作显示或隐藏。

 

标签:arr,const,name,代码,JavaScript,value,单行,key,age
From: https://www.cnblogs.com/L-hailong/p/18587840

相关文章

  • 一个项目中有很多无用的css代码,怎么找到并清除这些无用的代码?
    在一个项目中找到并清除无用的CSS代码,有很多方法,可以根据项目的规模和复杂程度选择合适的策略:1.使用浏览器开发者工具:CoverageTab:现代浏览器(Chrome,Firefox,Edge)的开发者工具都带有Coverage功能。打开开发者工具,切换到Coverage标签页,然后重新加载页面。Coverage......
  • 从0开始机器学习--12.决策分析-运筹优化与数学建模(决策分析方法,评价模型-层次分析法AH
    写在前面这些内容准确来说严格意义上不属于机器学习,把这部分内容归在这篇专栏中,主要原因之一是:机器学习算是与评价模型有关,且机器学习可以解决数学建模的问题。(其实就是我不想让这篇文章没有专栏归属,就把它聚类到这里了,后续若有更新其他运筹或数模的文章会再单独分类的~)机器......
  • Microi 吾码:后端开发的创新引擎与代码艺术
    目录一、引言二、Microi吾码后端架构概述三、Microi吾码在数据处理与优化方面的应用四、Microi吾码与外部服务的集成五、Microi吾码在安全性方面的考量与实现六、Microi吾码的性能监控与调优七、总结一、引言在当今数字化浪潮汹涌澎湃的时代,软件系统的后端......
  • 一个有趣的插件,让写代码变成打怪升级的游戏
    前言本来是要安装个statistic插件来统计代码行数的无意中发现了Code::Stats这个插件看了下介绍挺有意思的效果这是我用这个插件写了两天代码后的成果,现在升到2级了这是总览可以详细看到每种语言的经验值每天各个时段的活跃程度后面还有一些其他详细的统计关......
  • 全面解析:使用Python实现Docx转Pdf及PDF OCR处理的自动化流程(附完整代码)
    在数字化办公环境中,文档格式转换与内容提取是日常工作中经常遇到的需求。本文将详细介绍如何使用Python构建一个自动化流程,实现从.docx文件转换为.pdf,然后对.pdf文件进行OCR(光学字符识别)处理,最终将识别结果保存为Word文档。整个流程涵盖了文件转换、图像处理、OCR识别和结果整......
  • springboot/ssm美食分享系统Java代码web项目美食烹饪笔记分享交流
    springboot/ssm美食分享系统ava美食烹饪笔记分享交流系统web美食源码基于springboot(可改ssm)+vue项目开发语言:Java框架:springboot/可改ssm+vueJDK版本:JDK1.8(或11)服务器:tomcat数据库:mysql5.7(或8.0)数据库工具:Navicat/sqlyog开发软件:eclipse/idea依赖管理包:Maven......
  • springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码
    springboot/ssm线上教育培训办公系统Java代码web项目在线课程作业源码基于springboot(可改ssm)+html+vue项目开发语言:Java框架:springboot/可改ssm+vueJDK版本:JDK1.8(或11)服务器:tomcat数据库:mysql5.7(或8.0)数据库工具:Navicat/sqlyog开发软件:eclipse/idea依赖管理......
  • task05&&01拓展:Python 条件判断和代码风格随笔
    在Python编程中,遵循良好的代码规范至关重要。一、空格使用规范•采用空格表示缩进,切勿使用制表符(Tab)。•语法相关的每一层缩进用4个空格表示。•每行字符数最好不超过79个。若表达式过长需多行显示,除首行外,其余行应在正常缩进基础上再增加4个空格。•函数和类定......
  • web前端期末大作业:基于HTML+CSS+JavaScript制作我的音乐网站(带设计报告)
    ......
  • 拓展01 :代码风格/Python Style
    代码规范关于代码规范,详细内容可以看PEP8这是Python官方对于代码规范的要求。以下我来总结几点重要内容。关于空格使用空格来表示缩进而不要用制表符(Tab)。和语法相关的每一层缩进都用4个空格来表示。每行的字符数不要超过79个字符,如果表达式因太长而占据了多行,除了首......