欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

JavaScript数组扁平化的实现

发布时间:2024/1/18 javascript 83 豆豆
生活随笔 收集整理的这篇文章主要介绍了 JavaScript数组扁平化的实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

数组扁平化

数组扁平化指的是把一个多维数组拆分成一个一维数组。

  • 递归
  • function flattern(arr){let result = [];for(let i = 0, len = arr.length; i < len; i++){if(Array.isArray(arr[i])){result = result.concat(flattern(arr[i]));} else {result.push(arr[i]);}}return result; }

    递归的方法比较容易想到,也比较容易,但是对于JavaScript在浏览器中运行需要考虑栈溢出的问题,数组的层次不能太多。

  • reduce
  • function flattern(arr){return arr.reduce(function (prev, item) {return prev.concat(Array.isArray(item) ? flattern(item) : item);},[]); }

    使用reduce比较容易,使用现有API能够更好的实现目的。

  • 扩展运算符
  • function flattern(arr){while(arr.some(item => {return Array.isArray(item);})){arr = [].concat(...arr);}return arr; }
  • split()和toString()
  • function flattern(arr){return arr.toString().split(','); }

    5.flat()

    function flattern(arr){return arr.flat(Infinity); }

    flat是ES6中提出的新的API能够直接把多维数组转换成一维数组,比reduce更加直接。

  • 正则和JSON方法共同处理
  • function flattern(arr){let str = JSON.stringify(arr);str = str.replace(/(\[|\])/g, '');str = '[' + str + ']';return JSON.parse(str); }

    使用JSON的方法将数组字符串化,然后使用正则把[]替换掉,从而得到一个一维数组的字符串形式,再通过parse方法转换,这种方式可以转换比较深层次的多维数组。
    不过对于数组中的数据类型有一些限制,只能支持JSON支持的数据类型,如果是函数,则不会被正常转换。

    总结

    以上是生活随笔为你收集整理的JavaScript数组扁平化的实现的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。