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

诸城网站建设开发百度医生

诸城网站建设开发,百度医生,自己做视频网站如何接广告,wordpress 更换主题关于数组拍平 所谓数组拍平,就是按照顺序,把他们全放在一个数组中需要考虑多层级和嵌套的问题来彻底拍平数组 * 实现方案 1 )一般思路, 先实现一级扁平化,然后递归,直到全部扁平 function flat(arr) {const res […

关于数组拍平

  • 所谓数组拍平,就是按照顺序,把他们全放在一个数组中
  • 需要考虑多层级和嵌套的问题来彻底拍平数组
    *

实现方案

1 )一般思路, 先实现一级扁平化,然后递归,直到全部扁平

function flat(arr) {const res = [];arr.forEach(item => {if(Array.isArray(item)) {const flatItem = flat(item); // 递归flatItem.forEach(n => res.push(n));} else {res.push(item);}})return res;
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]

2 )基于 Array的concat方法和递归实现, 优化方案1

function flat(arr) {// 验证 arr 中,还有没有深层数组 [1, 2, [3, 4]]const isDeep = arr.some(item => item instanceof Array);if (!isDeep) return arr; // 已经是 flatern [1, 2, 3, 4]// 如果有深层数组,则拍平,示例:[].concat(1,2,[3,4],5) 返回 [1,2,3,4,5], 利用concat方法的拍平const res = Array.prototype.concat.apply([], arr);return flat(res); // 递归
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]

3 )使用reduce实现

function flat(arr) {return arr.reduce((result, current) => {if (Array.isArray(current)) {return result.concat(flat(current));}return result.concat(current);}, []);
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]

4 )基于String的toString方法和递归实现

function flat(arr) {// 验证 arr 中,还有没有深层数组 [1, 2, [3, 4]]const isDeep = arr.some(item => item instanceof Array)if (!isDeep) return arr // 已经是 flatern [1, 2, 3, 4]// 如果有深层数组,则拍平,转换成字符串拍平const res = arr.toString().split(',').map(val => +val);return flat(res) // 递归
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]

5 )直接使用toString方法即可拍平成字符串,再转成数组即可,方案4的优化版本

function flat(arr) {return arr.toString().split(',').map(val => +val);
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]

6 ) 使用 Array的 flat() 方法, 注意参数的使用,可以用 Infinity 代替具体的层数

function flat(arr) {return arr.flat(Infinity);
}const res = flat( [1, 2, [3, 4, [10, 20, [100, 200]]], 5] );
console.log(res); // [1, 2, 3, 4, 10, 20, 100, 200, 5]
http://www.fp688.cn/news/146893.html

相关文章:

  • 网站开发者yotoon流量网站
  • 复兴专业做网站在线培训系统
  • 做流量的网站拉新推广怎么找渠道
  • 包头市住房和城乡建设局网站seo关键词快速提升软件官网
  • 济南网站建设多少钱宁波seo在线优化方案公司
  • 个人备案购物网站站长工具查询入口
  • 网站竞价难做优化网络推广方法技巧
  • 绵阳市做公司网站保健品的营销及推广方案
  • 做暖暖免费视频网站雅虎搜索
  • 网站流量赚钱营销推广方案模板
  • 深圳坪山高铁站站长之家素材网站
  • 网站建设视频百度网盘下载电商平台排行榜
  • 企业网站建设方案论文寰宇seo
  • 有那些是做批发的网站百度建站多少钱
  • 网站关键词排名查询aso推广优化
  • seo网站模版免费下载官方百度
  • 做网站设计制作公司宁波网站推广方案
  • 网站如何做seo推广方案搜狐财经峰会
  • 福建漳州网站建设价格黑帽seo优化
  • 怎么做网站呀网络推广营销网站建设专家
  • 网站制作公司都还赚钱吗百度流量统计
  • 昌平沙河网站建设新闻头条新闻
  • 北京律师微网站怎么做建站宝盒
  • 做网站id推广普通话手抄报内容简短
  • 横岗网站建设网络推广专家
  • wordpress 标题 插件seo优化关键词放多少合适
  • 为什么自己花钱做的网站竟然不是自己的?(怎么做微信小程序
  • asp.net网站开发介绍国际新闻今日头条
  • 网站没有备案网站排名优化手机
  • 顺义做网站公司如何购买域名