Steamroller FreeCodeCamp
function steamroller(arr) {
// I'm a steamroller, baby
var resultArr = [];
for(var i = 0; i < arr.length; i++) {
if(Array.isArray(arr[i])){
resultArr = resultArr.concat(steamroller(arr[i]));
}else{
resultArr.push(arr[i]);
}
}
return resultArr;
}
题目:
对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。steamroller([1, [], [3, [[4]]]])应该返回 [1, 3, 4]。
分析:
实际应用中你并不知道这个数组里面嵌套了几个数组(arr.length),也不知道嵌套了多深(使用递归较为方便),
Array.isArray()这个函数可以判断传进去的参数类型是不是数组。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
Array.prototype.push()函数将一个或多个元素添加到数组的末尾,并返回新数组的长度。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push
Array.prototype.concat()函数可以将两个数组拼接为一个数组,且维度不变。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
因为递归函数的返回值是同一个,所以类型都是数组且是一维的。所以使用concat而不使用push来拼接最后进栈的函数返回的数组。
Steamroller FreeCodeCamp的更多相关文章
- FreeCodeCamp 中级算法(个人向)
freecodecamp 中级算法地址戳这里 Sum All Numbers in a Range 我们会传递给你一个包含两个数字的数组.返回这两个数字和它们之间所有数字的和. function su ...
- Steamroller
FCC题目:对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. 示例: steamroller([[["a"]], [["b"]]]) 应该返回 [&qu ...
- freecodecamp记录
来源:https://www.freecodecamp.cn 如果需要填充文本来检查排版效果,网上有自动生成器,乱文生成器:此外Microoft Word中有一个函数能够自动生成每段20句的6段填充文 ...
- 尝试自己翻译了FreeCodeCamp的文章,技术方面多认识了几种技术,文章标题:Transparency in Action Free Code Camp is Now Open Source
这是FreeCodeCamp其中一篇文章,趁着学习英文的时间,翻译这篇文章,其中讲到作者创建FCC过程,本文属于原创,第一次翻译,翻译还有诸多不足之处,请大家包含. 原文地址:https://medi ...
- FreeCodeCamp 高级算法(个人向)
freecodecamp 高级算法地址戳这里. freecodecamp的初级和中级算法,基本给个思路就能完成,而高级算法稍微麻烦了一点,所以我会把自己的解答思路写清楚,如果有错误或者更好的解法,欢迎 ...
- FreeCodeCamp 前端初级算法(个人向)
freecodecamp 初级算法地址戳这里 Reverse a String 翻转字符串 function reverseString(str) { str=str.split("&quo ...
- RX学习笔记:FreeCodeCamp的JavaScript基本算法挑战
FreeCodeCamp的JavaScript基本算法挑战 https://www.freecodecamp.com 2016-07-03 JavaScript还不是非常熟悉,用已经会的知识来解这些题 ...
- RX学习笔记:在FreeCodeCamp的学习
FreeCodeCamp https://www.freecodecamp.com 2016-07-03 前几日在Github浏览时,偶然看到一个叫FreeCodeCamp的开源项目,进去该网站之后感 ...
- 近期Freecodecamp问题总结
最近没什么事,刷了freecodecamp的算法题,发现了自己基础的薄弱 1 where are thou 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对( ...
随机推荐
- 渗透实战(周一):VMmare Fusion安装Kali Linux和win7虚拟机
高配笔记本电脑i5/8G/265G .VMware Fusion .Kali Linux镜像 .Win7镜像 第一:下载软件 1.如果你是苹果系统,建议下载最新VMware Fusion 11.0. ...
- tp5 封装百度地图api接口
//服务器端api extend\Map <?php /** * 百度地图业务封装 */ class Map{ /** * 根据地址来获取经纬度 * @param $address */ pub ...
- 0926MySQL中ICP索引下推
转自 http://blog.itpub.net/22664653/viewspace-1678779/ [MySQL]MySQL5.6新特性之Index Condition Pushdown2015 ...
- linux 文件操作系统调用
crate:创建文件 open:打开文件 read:读取文件 write:写文件 lseek :设置文件偏移量 access:推断文件 close:关闭文件的读写操作
- 18124 N皇后问题
18124 N皇后问题 时间限制:2000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC Description 有N*N的国际象棋棋盘,要 ...
- HDU 3340 Rain in ACStar(线段树+几何)
HDU 3340 Rain in ACStar pid=3340" target="_blank" style="">题目链接 题意:给定几个多 ...
- AVL树、splay树(伸展树)和红黑树比较
AVL树.splay树(伸展树)和红黑树比较 一.AVL树: 优点:查找.插入和删除,最坏复杂度均为O(logN).实现操作简单 如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实 ...
- [WebServer] Windows下Apache与Tomcat的整合
转自:http://bbs.blueidea.com/thread-2873268-1-1.html 准备工作:1. Apache 2.2.4下载地址:http://cztele1.skycn.com ...
- [JavaEE] Apache Maven 入门篇(上)
http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html 作 ...
- springboot的推荐模板引擎-Thymeleaf
1)添加对themeleaf的支持的依赖 <!--Thymeleaf--> <dependency> <groupId>org.springframework.bo ...