Steamroller

function steamroller(arr) {
  // I‘m a steamroller, baby
  //return arr;
  var result = [];
  for(var i = 0; i < arr.length; i++){
    if(Array.isArray(arr[i])){
      result = result.concat(steamroller(arr[i]));
    }else{
      result.push(arr[i]);
    }
  }
  return result;
}

steamroller([1, [2], [3, [[4]]]]);

  或

function steamroller(arr,flatArr) {
  // I‘m a steamroller, baby
  //return arr;
  if (!flatArr)    flatArr = [];

  for (var i in arr) {
    if(!Array.isArray(arr[i])){
      flatArr.push(arr[i]);
    }else {
      steamroller(arr[i],flatArr);
    }

  }

  return flatArr;
}

steamroller([1, [2], [3, [[4]]]]);

  

时间: 2024-10-22 11:19:34

Steamroller的相关文章

程序员经典语录

1.A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder) 好的程序员即使在过单行道时也总是会环顾两边. 2.Don’t worry if it doesn’t work right. If everything did, you’d be out of a job. (Mosher’s Law of Software Engineering)

FCC上的javascript算法题之中级篇

FCC中的javascript中级算法题解答 中级算法的题目中用到了很多js的知识点,比如迭代,闭包,以及对json数据的使用等等,现在将自己中级算法的解答思路整理出来供大家参考讨论.欢迎大家提出新的思路,写出更简单的解法. 1.给一个包含两个数字的数组.返回这两个数字和它们之间所有数字的和. 说明:最小的数字并非总在最前面 如:sumAll([4, 1]) 应该返回 10. sumAll([5, 10]) 应该返回 45. function sumAll(arr) { var max=Math

FCC 中级算法题 数组扁平化

Steamroller 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. Array.isArray() 思路: (1)遍历arr,如果arr[i]是数组,就重新调用本函数继续循环,然后和新数组连接; (2)如果不是数组,就直接添加进新数组: 知识点: (1)Array.concat()方法用于合并两个或多个数组.此方法不会更改现有数组,而是返回一个新数组; (2)Array.push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度; (3)Array.isArray()用于

苹果广告背景音乐大全【转】

1.music every day 广告背景音乐(作者是rob simonsen,曲名red)2.photo every day 广告背景音乐(作者是rob simonsen,曲名red)3.wwdc 2013 开场动画背景音乐(作者:Keith Kenniff 曲名 receives)下表介绍了苹果公司在对媒体公开的活动及广告中使用过的歌曲.活动                                   歌曲                                      

程序员搞笑编程语录

1.Why do we never have time to do it right, but always have time to do it over? (Anonymous) 为什么我们总是没有时间把事情做对,却有时间做完它? 2.Don't worry if it doesn't work right. If everything did, you'd be out of a job. (Mosher's Law of Software Engineering) 不要担心它能否正常工作

编写自己的代码库(javascript常用实例的实现与封装)

编写自己的代码库(javascript常用实例的实现与封装) 1.前言 大家在开发的时候应该知道,有很多常见的实例操作.比如数组去重,关键词高亮,打乱数组等.这些操作,代码一般不会很多,实现的逻辑也不会很难,下面的代码,我解释就不解释太多了,打上注释,相信大家就会懂了.但是,用的地方会比较,如果项目有哪个地方需要用,如果重复写的话,就是代码沉余,开发效率也不用,复用基本就是复制粘贴!这样是一个很不好的习惯,大家可以考虑一下把一些常见的操作封装成函数,调用的时候,直接调用就好!源码都放在githu

FreeCodeCamp( FCC)前端工程师 中级算法练习 分析与解答(全)(精)

[TOC] 说在前面 这是要一篇非常简单的新手能看懂的文章,希望你喜欢.由于在 freecodecamp 中貌似!?无法使用 ES6 的某些语法,未测试具体.所以基本上用古老?!的ES5,4写成,谢谢.在写本博文前没有参考过别人的做法,纯手打,我的方法肯定不是最好,只是以我自己喜欢的方式在写而已. 纯原创,转载请联系作者https//:[email protected].[email protected]. freecodecamp China 不明白API请参考MDN给出的解释 个别题目没有判

在vSphere群集中配置EVC的注意事项

在为VMware vSphere虚拟化环境配置高可用群集(HA)时,有一个重要的参数:EVC配置.如果加入群集的主机具有相同的配置(关键是CPU相同),则配置较为方便.如果混合使用新.旧不同的服务器,服务器的CPU型号不一致时,则加入同一群集时,配置EVC就较为麻烦,本文将介绍这一问题. 1 VMware EVC概述 EVC 是 Enhanced vMotion Compatibility 的简称,是VMware群集功能的一个参数.EVC 允许在不同代 CPU 之间迁移虚拟机 EVC 不允许 A

码农心酸无奈聊以自嘲的59箴言

59 Hilarious but True Programming Quotes for Software Developers 程序员的 59 条搞笑但却真实无比的编程语录 I have collected a lot of programming quotes which are anyhow related to the life of a software developer. These quotes are related to software development mainte