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

黄石网站建设推荐高明网站建设报价

黄石网站建设推荐,高明网站建设报价,阿里巴巴运营岗位职责,英语培训建设网站方案关于数组拍平 所谓数组拍平,就是按照顺序,把他们全放在一个数组中需要考虑多层级和嵌套的问题来彻底拍平数组 * 实现方案 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.yayakq.cn/news/799874/

相关文章:

  • 嘉兴手机网站建设大兴模板网站建设
  • 公司做网站有什么好处外贸seo网站搭建
  • 江门市网站建设公司怎么自己做网站吓别人
  • 神级网页设计网站上海每44秒就有一人死于新冠
  • 做酒类网站广东建设信息网手机版
  • 沈阳沈河区网站建设手机品牌排行榜
  • 展示网站多少钱一个网站备案 多少钱
  • 做网站需要自备服务器吗wordpress漂浮广告插件
  • php网站发送邮件北京网站建设备案代理
  • 学做淘宝店的网站辽宁建设工程信息网开标流程
  • 微商城网站建设策划书小程序开发模板源码
  • 江西求做网站专业做淘宝网站推广
  • 福清网站建设专家邢台做企业网站
  • 网站后台模板怎样使用应用公园制作app免费吗
  • 怎么打开网站微信企业公众号开发平台
  • 网站项目报价方案网站建设与管理报告书
  • 电子商务网站建设项目的阶段的划分修改网站备案信息
  • 网站开发的几个步骤安丘住房建设局网站
  • 网站建设金手指排名稳定上门做网站哪里有
  • 学校网站建设措施wordpress首页友情链接
  • 网站模板 家自己做网站怎么搜索
  • 做下载网站挣钱吗哈尔滨模板建站品牌
  • 网站开发管理郑州网站搭建
  • 网站负责人手机网站模板下载免费
  • 专门做同人h的网站企业为什么要建站台呢
  • 网站开发有哪些新技术杭州网站优化搜索
  • 网址域名是什么淮安网站优化
  • 网站建设服务合同需要哪些资料京东的网络营销策略
  • 做网站ps笔记本电脑网站开发和手机开发哪个好
  • 肇庆市住房和城乡建设部网站wordpress 无法html