FreeCodeCamp筆記之:Steamroller

题目

对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。
如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Array.isArray()
steamroller([[["a"]], [["b"]]]) 应该返回 ["a", "b"]。
steamroller([1, [2], [3, [[4]]]]) 应该返回 [1, 2, 3, 4]。
steamroller([1, [], [3, [[4]]]]) 应该返回 [1, 3, 4]。
steamroller([1, {}, [3, [[4]]]]) 应该返回 [1, {}, 3, 4]。

思路

  1. 看到题目提示,其实应该就是将嵌套的数组提到第一层;
  2. 需要用到 Array.isArray()来判断arr的某一个元素是否是数组;
  3. 如果是数组,则需要用到 concat 合并到新的数组;如果不是数组,则直接 push 到新的数组中;

解答

function steamroller(arr) {
  // I'm a steamroller, baby
  var len = arr.length;
  var temp =[];
  for(var i =0;i<len;i++){
    if(Array.isArray(arr[i])){
      temp=temp.concat(steamroller(arr[i]));
    } else{
      temp.push(arr[i]);
    }
  }
  return temp; 
}
steamroller([1, [2], [3, [[4]]]]);
  • 用到的2个函数 concat 是针对数组进行合并;push则是给数组添加新的元素;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,254评论 0 6
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,275评论 0 4
  • 数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript...
    劼哥stone阅读 1,159评论 6 20
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,707评论 0 6
  • 重生的第七天了 我终于接受了事实,我重生,重新从一个婴儿开始慢慢长大...... 上一世的错,绝不在犯 这一世,做...
    霸气love劫阅读 108评论 0 0