FCC 中级算法题 数组扁平化
Steamroller
对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。
思路:
(1)遍历arr,如果arr[i]是数组,就重新调用本函数继续循环,然后和新数组连接;
(2)如果不是数组,就直接添加进新数组;
知识点:
(1)Array.concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组;
(2)Array.push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度;
(3)Array.isArray()用于确定传递的值是否是一个 Array。
代码:
1 function steamroller(arr) {
2 var newArr=[];
3 for(var i=0;i<arr.length;i++){
4 if(Array.isArray(arr[i])){
5 //如果是数组,就重新调用本函数继续循环,然后和新数组连接
6 newArr=newArr.concat(steamroller(arr[i]));
7 }else{
8 //如果不是数组,就直接添加进新数组
9 newArr.push(arr[i]);
10 }
11 }
12 return newArr;
13 }
14 steamroller([1, [2,222,[22,[2,[2]]]], [3, [[4]]]]);
FCC 中级算法题 数组扁平化的更多相关文章
- FCC中级算法(上)
在学习FCC中级算法这一块,自己遇到了很多问题,通过RSA也慢慢把问题解决了,发现每一个问题都会有很多的解决思路,因此把自己想到的一些思路记录到这里. 1. Sum All Numbers in a ...
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
- JS: 数组扁平化
数组扁平化 什么是数组扁平化? 数组扁平化就是将一个多层嵌套的数组 (Arrary) 转化为只有一层. // 多层嵌套 [1, 2, [3, 4]] // 一层 [1, 2, 3, 4] 递归实现 思 ...
- js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化
Array.prototype.reduce()方法介绍: 感性认识reduce累加器: const arr = [1, 2, 3, 4]; const reducer = (accumulator, ...
- JS数组专题1️⃣ ➖ 数组扁平化
一.什么是数组扁平化 扁平化,顾名思义就是减少复杂性装饰,使其事物本身更简洁.简单,突出主题. 数组扁平化,对着上面意思套也知道了,就是将一个复杂的嵌套多层的数组,一层一层的转化为层级较少或者只有一层 ...
- js多维数组扁平化
数组扁平化,就是将多维数组碾平为一维数组,方便使用. 一:例如,一个二维数组 var arr = ['a', ['b', 2], ['c', 3, 'x']],将其扁平化: 1. 通过 apply ...
- javascrip的数组扁平化
扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,效果就会如下: var ar ...
- js中数组扁平化处理
- js实现数组扁平化
数组扁平化的方式 什么是数组扁平化? 数组扁平化:指将一个多维数组转化为一个一维数组. 例:将下面数组扁平化处理. const arr = [1, [2, 3, [4, 5]]] // ---> ...
- fcc的中级算法题
核心提示:这是网上开源编程学习项目FCC的javascript中级编程题(Intermediate Algorithm Scripting(50 hours)),一共20题.建议时间是50个小时,对于 ...
随机推荐
- 集群分发xsync xcall kafka启动脚本命令,命令方式安装epel源
安装epel库源 yum install epel-release -y --nogpgcheck yum install glances 安装开始 建立hosts 白名单 127.0.0.1 loc ...
- java 基本知识点
多线程 加载器 数据结构 内存模型 gc算法
- Ubuntu16.04设置root以及root用户自动登录
自己之前做的笔记确实不是很详细.因为像是一些环境的配置,即使是这样做,但是自己大概率下是不知道这样做的原因,所以很多东西能不能弄好是有很大的运气成分在里面.所以就很需要记录下自己到底干了些什么. 所以 ...
- OCR开源项目
转发自https://www.toutiao.com/a6802032805313249806/?tt_from=weixin&utm_campaign=client_share&wx ...
- 整合mybatis-示例
引入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...
- rdlc 中文在win10中显示异常,在非win10中显示正常
RDLC中的默认字体Arial. 在win10中,RDLC为Arial时,显示中文会异常,这个时候,只需要将Font修改为中文字体就可以了,例如修改为宋体.
- fail-fast简介
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308762.html fail-fast简介(使用concurrentHashMap可以完美避免这个问题 ...
- HCIP-进阶实验02-ISIS协议部署
进阶实验02-ISIS协议部署 1 实验需求 设备 接口 IP地址 备注 R1 G0/0/0 10.1.123.1/24 R2 G0/0/0 10.1.123.2/24 G0/0/1 10.1.24. ...
- mysql的日期输出格式列出来
mysql的日期输出格式列出来: %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) %f 微秒 %H 小 ...
- 策略模式demo
/** StrategyContext. */ public class StrategyContext { private Strategy strategy; // 传入的是Strategy的实现 ...