在前端开发中,经常会遇到需要对数组进行去重或者拍平的情况。本文将介绍 JavaScript 中常用的几种数组去重和拍平的方法,并提供相应的示例代码。
数组去重
数组去重是指将数组中重复的元素删除,只保留一个。常用的数组去重方法有以下几种:
1. 使用 Set 数据结构
ES6 引入了 Set 数据结构,可以很方便地实现去重操作。Set 对象允许存储任何类型的唯一值,包括原始值和引用类型。
const arr = [1, 2, 2, 3, 3, 4]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3, 4]
2. 使用 filter 方法
使用 filter 方法遍历数组,利用 indexOf 或 includes 方法判断元素是否已存在于新数组中,如果不存在则添加到新数组中。
const arr = [1, 2, 2, 3, 3, 4]; const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); console.log(uniqueArr); // [1, 2, 3, 4]
3. 使用 reduce 方法
使用 reduce 方法遍历数组,利用空对象作为累加器,以元素值作为键名,判断该键是否存在于累加器中,如果不存在则添加到累加器中。
const arr = [1, 2, 2, 3, 3, 4]; const uniqueArr = arr.reduce((acc, cur) => { if (!acc.includes(cur)) { acc.push(cur); } return acc; }, []); console.log(uniqueArr); // [1, 2, 3, 4]
数组拍平
数组拍平是指将嵌套的多维数组转换为一维数组的过程。常用的数组拍平方法有以下几种:
1. 使用递归
使用递归方式遍历数组,如果元素是数组,则递归处理该子数组,否则将元素添加到新数组中。
-- -------------------- ---- ------- ----- --- - --- -- --- -- --- ----- -------- --------- - --- --- - --- --- ---- - - -- - - ----------- ---- - -- ----------------------- - --- - ------------------------- - ---- - ----------------- - - ------ ---- - ----- ------- - ---------- --------------------- -- --- -- -- -- -- --展开代码
2. 使用 reduce 方法
利用 reduce 方法遍历数组,并在遍历的过程中将每个元素拍平后添加到累加器中。
const arr = [1, 2, [3, 4, [5, 6]]]; const flatArr = arr.reduce((acc, cur) => { return acc.concat(Array.isArray(cur) ? flat(cur) : cur); }, []); console.log(flatArr); // [1, 2, 3, 4, 5, 6]
总结
本文介绍了 JavaScript 中常用的几种数组去重和拍平方法,并提供了相应的示例代码。在实际开发过程中,根据具体的场景选择合适的方法可以提高开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/2251