zoukankan      html  css  js  c++  java
  • [优化]Steamroller-freecodecamp算法题目

    晚上在medium看到一篇关于找工作的文章,里面提到一个面试题目——flattening an array(扁平化数组)。这我好像在哪看过!应该是freecodecamp里的算法某一题。翻了下博客记录。是这篇——Steamroller-freecodecamp算法题目

    题目名字不一样,内容一样,要求扁平化数组,简单的说就是把一个复杂多维数组变成一维数组。比如:输入[1,[2,[3,[4]]]],输出[1,2,3,4]。

    • 原先的解法
    function steamroller(arr) {
     // I'm a steamroller, baby
     var res=[];
     for(var i=0;i<arr.length;i++){
       if(Array.isArray(arr[i])){
         res=res.concat(steamroller(arr[i]));
       }
       else{
         res.push(arr[i]);
       }
     }
     return res;
    }
    
    • medium文章里的解法:
    // 以下为复写版本
    function steamroller(arr) {
     // I'm a steamroller, baby
     return arr.reduce((total,item) => {
       return total.concat(Array.isArray(item)? steamroller(item) : item);
     },[]);
    }
    

    显然第二种代码量少了。利用reduce方法替代了for循环,三目运算符替代判断语句大大减少了代码量。也用到了ES6的箭头函数。

    以后写js代码时,一定要多思考。性能暂不提。能不能用现有的最新的方法函数简化代码?提高代码可读性?多思考多实践。多思考多实践。多思考多实践。

  • 相关阅读:
    萨卡斯指法
    香港保险
    数据分析,了解行业
    数据分析师
    黑盒测试方法
    web系统的常用功能测试
    linux-磁盘问题
    mysql连表查询
    mysql模糊查询
    MySQL 数据类型
  • 原文地址:https://www.cnblogs.com/ahswch/p/9557297.html
Copyright © 2011-2022 走看看