当前位置: 首页 > news >正文

网站建设:成都今网科技asp.net+制作网站开发

网站建设:成都今网科技,asp.net+制作网站开发,建筑工程公司名录,厦门百度整站优化服务实现方式1(递归) 普通的递归思路很容易理解,就是通过循环递归的方式,一项一项地去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组的每一项的连接: let arr […

实现方式1(递归)

普通的递归思路很容易理解,就是通过循环递归的方式,一项一项地去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组的每一项的连接:

let arr = [1,[2,3,[4]]];
function flatten(arr){let newArr = [];//这里得用of不能用in,用in遍历出来的item是数组下标,得注意for(let item of arr){console.log(item);//Array.isArray()是一个安全的函数if(Array.isArray(item)){//concat函数返回一个新数组newArr = newArr.concat(flatten(item));}else {newArr.push(item);}}return newArr;
}console.log(flatten(arr));

实现方式2(reduce)

let arr = [1,[2,3,[4]]];
function flatten(arr){return arr.reduce(function(pre,current){return pre.concat(Array.isArray(current) ? flatten(current) : current)},[])
}console.log(flatten(arr));

实现方式3(扩展运算符)

这个方法的实现,采用了扩展运算符和 some 的方法,两者共同使用,达到数组扁平化的目的,个人认为此方法是最酷的,能够给面试官一个惊喜

let arr = [1,[2,[3,4]]];
function flatten(arr){while(arr.some(item => Array.isArray(item))){console.log(arr);arr = [].concat(...arr)}return arr;
}console.log(flatten(arr));

实现方式4

可以通过 split 和 toString 两个方法来共同实现数组扁平化,由于数组会默认带一个 toString 的方法,所以可以把数组直接转换成逗号分隔的字符串,然后再用 split 方法把字符串重新转换为数组

let arr = [1, [2, [3, 4]]];
function flatten(arr) {return arr.toString().split(',');
}
console.log(flatten(arr)); //  [1, 2, 3, 4,5]

实现方式5(ES6新增函数flat)

我们还可以直接调用 ES6 中的 flat 方法来实现数组扁平化。flat 方法的语法:arr.flat([depth])

其中 depth 是 flat 的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开一层数组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开:

let arr = [1, [2, [3, 4]]];
function flatten(arr) {return arr.flat(Infinity);
}
console.log(flatten(arr)); //  [1, 2, 3, 4,5]

实现方式6(正则表达式)

(6)正则和 JSON 方法 在第4种方法中已经使用 toString 方法,其中仍然采用了将 JSON.stringify 的方法先转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用 JSON.parse 把它转换成数组:

let arr = [1, [2, [3, [4, 5]]], 6];
function flatten(arr) {let str = JSON.stringify(arr);console.log(str);//[1,[2,[3,[4,5]]],6],字符串str = str.replace(/(\[|\])/g, '');console.log(str);//1,2,3,4,5,6str = '[' + str + ']';console.log(str);//[1,2,3,4,5,6]return JSON.parse(str); 
}
console.log(flatten(arr)); //  [1, 2, 3, 4,5]

http://www.yayakq.cn/news/919631/

相关文章:

  • 医药网站建设的需求分析开发小程序费用
  • 海淀做企业网站的公司针对网站做搜索引擎做优化
  • seo站群优化站内推广有哪些具体方式
  • 网站内容建设出现的问题wordpress中文主题模板下载
  • 小型网站开发需要什么步骤在微信公众号发布wordpress
  • 电子商城网站开发支持手机端网站策划教程
  • 谁有wap网站hao123从网上开始
  • 网站开发项目的需求分析百度seo网站优化 网络服务
  • 咸阳兼职做网站科技公司建设网站
  • 东莞设计企业网站的有哪些开发一个网站做公司内部用
  • 工信部网站备案审核php做的网站用什么后台
  • 静态html网站打包成exe建筑人才网app下载
  • 南京做网站建设搭建的公司wordpress 原生相册
  • 广州自助建站西宁微网站建设
  • 1 建设网站目的是什么广点通推广登录入口
  • 社保个人网站入口如何保持网站中的图片
  • 网站防护找谁做湖南城乡住房建设厅网站
  • 旅游网站平台Wordpress虚拟资源交易
  • 开公司如何做网站推广页面安徽合肥做网站的公司有哪些
  • 品牌建设网站特点优质的杭州网站优化
  • 网站建设需求说明书石家庄网站建设燕杰
  • 东莞做公众号的网站常用的小企业网站建设
  • 广州中小企业网站建设wordpress 主题教程 水煮鱼
  • 深圳百度网站建设wordpress 产品相册插件
  • 上海市建设教育网站烟台海阳市专业做网站
  • 自己做网站宣传产品管理的核心是什么
  • 韩雪冬网站找工程承包找哪个平台
  • 东莞做网站做seo优化外包网络公司百度搜索引擎关键词
  • 多语言网站制作建设部网站资质标准
  • 自助建站免费自助建站网站蚌埠市建设学校网站