zoukankan      html  css  js  c++  java
  • 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来拼接最后进栈的函数返回的数组。

  • 相关阅读:
    jQuery事件
    jQuery的效果
    jQuery 选择器
    中级 jQuery 了解
    回调函数 callback()
    预加载
    表格对象的方法
    script中type属性讲解
    将数据渲染到页面的方式:模版
    将数据渲染到页面的几种方式
  • 原文地址:https://www.cnblogs.com/zhrngM/p/8644638.html
Copyright © 2011-2022 走看看