掌握JavaScript中7个鲜为人知的数组方法
AI 概述
1. copyWithin(): 数组内部复制2. at() 和 with(): 现代数组访问方法3. reduceRight(): 从右向左归约4. findLast(): 反向查找5. 不可变数组操作方法6. lastIndexOf(): 查找最后匹配索引7. flatMap(): 映射并扁平化
前端开发中经常使用数组操作,除了常见的 map()、filter()、find() 和 push() 等方法...
目录
文章目录隐藏

前端开发中经常使用数组操作,除了常见的 map()、filter()、find() 和 push() 等方法外,JavaScript 还提供了许多强大的数组方法。这篇文章将介绍 7 个实用但较少被关注的数组方法。
1. copyWithin(): 数组内部复制
这个方法可以在同一个数组内复制并替换元素,不会改变数组长度。
const numbers = [1, 2, 3, 4, 5]; numbers.copyWithin(0, 3); // [4, 5, 3, 4, 5] // 指定结束位置 const fruits = ['apple', 'banana', 'orange', 'grape', 'kiwi']; fruits.copyWithin(2, 0, 2); // ['apple', 'banana', 'apple', 'banana', 'kiwi']
2. at() 和 with(): 现代数组访问方法
这两个新方法提供了更优雅的数组元素访问和修改方式:
const arr = ['a', 'b', 'c']; // 使用负索引访问最后一个元素 console.log(arr.at(-1)); // 'c' // 不改变原数组的情况下修改元素 const newArr = arr.with(1, 'x'); // ['a', 'x', 'c'] console.log(arr); // ['a', 'b', 'c']
3. reduceRight(): 从右向左归约
与 reduce() 类似,但从数组末尾开始处理:
// 构建嵌套对象
const keys = ['user', 'name', 'john'];
const nested = keys.reduceRight((value, key) => ({ [key]: value }), null);
// 结果: { user: { name: { john: null } } }
4. findLast(): 反向查找
ES13 新增方法,从数组末尾开始查找元素:
const numbers = [2, 4, 6, 8, 9, 10, 12]; // 查找最后一个偶数 const lastEven = numbers.findLast(num => num % 2 === 0); // 12
5. 不可变数组操作方法
ES2023 引入的新方法:toSorted()、toReversed()、toSpliced(),它们不会修改原数组:
const original = [3, 1, 4, 1, 5]; const sorted = original.toSorted(); // [1, 1, 3, 4, 5] console.log(original); // [3, 1, 4, 1, 5]
6. lastIndexOf(): 查找最后匹配索引
查找指定元素最后出现的位置:
const text = ['hello', 'world', 'hello', 'javascript'];
console.log(text.lastIndexOf('hello')); // 2
console.log(text.lastIndexOf('hello', 1)); // 0
7. flatMap(): 映射并扁平化
结合了 map() 和 flat() 的功能,效率更高:
const sentences = ['Hello world', 'JavaScript is awesome'];
const words = sentences.flatMap(sentence => sentence.split(' '));
// ['Hello', 'world', 'JavaScript', 'is', 'awesome']
这些方法虽然使用频率不高,但在特定场景下能够显著提升代码质量和效率。建议在实际前端开发中根据具体需求选择合适的数组方法。
以上关于掌握JavaScript中7个鲜为人知的数组方法的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 掌握JavaScript中7个鲜为人知的数组方法
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 掌握JavaScript中7个鲜为人知的数组方法
微信
支付宝