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