您现在的位置是:网站首页> 编程资料编程资料
JavaScript数组实现扁平化四种方法详解_javascript技巧_
2023-05-24
963人已围观
简介 JavaScript数组实现扁平化四种方法详解_javascript技巧_
数组的扁平化就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只有一层的数组。
var arr = [1, [2, [3, 4, 5]]]; console.log(flatten(arr)); // [1, 2, 3, 4,5]
本文就是要用多种方法实现这个 flatten 函数
1. 常规递归法
var a = [1, [2, [3, 4, 5]]]; function flatten(arr) { let newArray = [] for (let i of arr) { if (i.constructor === Array) { newArray = newArray.concat(flatten(i)) } else { newArray.push(i) } } return newArray } console.log(flatten(a)); // [1, 2, 3, 4,5]这段代码核心就是循环遍历过程中的递归操作,就是在遍历过程中发现数组元素还是数组的时候进行递归操作,把数组的结果通过数组的 concat 方法拼接到最后要返回的 result 数组上,那么最后输出的结果就是扁平化后的数组。
2. reduce方法
var a = [1, [2, [3, 4, 5]]]; function flatten(arr) { return arr.reduce((pre,next) => { return pre.concat(next instanceof Array ? flatten(next) : next) },[]) } console.log(flatten(a)); //[ 1, 2, 3, 4, 5 ]我们可以看到 reduce 的第一个参数用来返回最后累加的结果,思路和第一种递归方法是一样的,但是通过使用 reduce 之后代码变得更简洁了,也同样解决了扁平化的问题。
3. 扩展运算符实现
// 方法3 var arr = [1, [2, [3, 4]]]; function flatten(arr) { while (arr.some(item => Array.isArray(item))) { arr = [].concat(...arr); } return arr; } console.log(flatten(arr)); // [1, 2, 3, 4,5]我们先用数组的 some 方法把数组中仍然是组数的项过滤出来,然后执行 concat 操作,利用 ES6 的展开运算符,将其拼接到原数组中,最后返回原数组,达到了预期的效果。
4. split和toString共同处理
// 方法4 var arr = [1, [2, [3, 4]]]; function flatten(arr) { return arr.toString().split(','); } console.log(flatten(arr)); // [1, 2, 3, 4]数组会默认带一个 toString 的方法,可以把数组直接转换成逗号分隔的字符串,然后再用 split 方法把字符串重新转换为数组
到此这篇关于JavaScript数组实现扁平化四种方法详解的文章就介绍到这了,更多相关JavaScript数组扁平化内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- TypeScript接口与泛型全面精讲_javascript技巧_
- 如何让别人访问本地运行的vue项目_vue.js_
- JavaScript自定义Promise实现流程_javascript技巧_
- vue使用百度地图报错BMap is not defined问题及解决_vue.js_
- React Hooks获取数据实现方法介绍_React_
- vue中Echarts图表宽度没占满的问题_vue.js_
- vue结合echarts绘制一个支持切换的折线图实例_vue.js_
- React函数组件与类的区别有哪些_React_
- 使用echarts点击按钮从新渲染图表并更新数据_vue.js_
- 如何解决ECharts图表切换后缩成一团的问题_vue.js_
