JS实现数组降维的方法有哪些?
Admin 2021-08-31 群英技术资讯 1052 次浏览
在实际的应用中,有一些需求需要我们对二维数组、多维数据做降维,一些朋友可能对于数组降维的方法不是很了解,对此下面小编就给大家分享一下,需要的朋友可以参考。
使用数组实例方法concat和ES6扩展运算符降维
let arr=[1,2,[3,4],5]; let arr1=[].concat(...arr); //先使用扩展运算符打散最外边的数组,concat自带打散粘合数组的功能 console.log(arr1); // [1, 2, 3, 4, 5] //ES6之前用apply打散数据的兼容性写法 var arr2=[1,2,[3,4],5]; var arr3=[].concat.apply([],arr2); console.log(arr3); // [1, 2, 3, 4, 5]
递归降维
//几种利用数组函数递归降维的写法 //some&concat //利用some检查数组中是否含有数组有就在调用自己进行降维 function fun(arr){ arr=[].concat(...arr); //再检查降维后的数组中是否还包含子数组 let hasArray=arr.some(function(elem){ return Array.isArray(elem); }) if(hasArray){ //如果包含子数组 arr=fun(arr);//就只能再降维一次,直到检查不再包含子数组为止 } return arr; }; //forEach&instanceof //对数组每个元素进行判断看其是不是数组是在继续调用自己,不是把他放进提前准备的空数组中 function fun2(arr){ let ret = []; let toArr = function(arr){ arr.forEach(function(item){ item instanceof Array ? toArr(item) : ret.push(item); }); } toArr(arr); return ret; } //reduce&concat //最后准备一个空数组,看传入数组中的每一项是不是数组是就重新调用自己不是就用concat汇总到空数组中 function fun3(sarr){ return sarr.reduce((pre,val)=>{ return Array.isArray(val) ? pre.concat(fun3(val)): pre.concat(val) },[]) }
Array.prototype.flat()
ES10 新增Array.prototype.flat(),用于将嵌套的数组打散,变成一维的数组。该方法返回一个新数组,对原数据没有影响。
var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]] var arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6] //使用 Infinity 作为深度,展开任意深度的嵌套数组 arr3.flat(Infinity); // [1, 2, 3, 4, 5, 6]
关于JS数组降维的方法就介绍到这,上述实例具有一定的参考价值,有需要的朋友可以参考学习,希望能对大家有帮助,想要了解更多JS数组降维的内容,大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了vue原理Compile之optimize标记静态节点源码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
使用JavaScript实现随机颜色生成器 目录 项目基本结构 1.颜色生成器的基本结构 2.使用 HTML 添加标题 3.创建用于颜色查看的显示器 4.创建一个框以查看颜色代码 5.创建生成器和复制按钮 6.使用 JavaScript 激活随机颜色生成器 完整源码下载 在线演示地址 项目基本结构 目录结构如下: 1.颜色生成器的基本结构 我使用了以下的 HTML 和 CSS 代码创建了这个颜色生成器的基本结构.在添加所有信息的页面上创建了一个小框,框的背景颜色为白色. <div class="container" ...
这篇文章主要介绍了基于element-ui封装表单金额输入框的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家详细介绍了vue卡片式点击切换图片组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
现在很多商品都有售后评价,那么五星好评的功能是怎样实现的呢?这篇文章就给大家分享一下用用js实现简易的五星好评功能,实现效果及代码如下,感兴趣的朋友就继续往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008