美文网首页前端Freecode camp
(三)FCC前端算法题Return Largest Number

(三)FCC前端算法题Return Largest Number

作者: 3bdb28916098 | 来源:发表于2017-09-24 22:15 被阅读28次

    题目链接:Return Largest Numbers in Arrays

    要求:返回嵌套数组中每个数组中的最大的那个数组成的数组。

    测试条件:

    largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]) 应该返回一个数组

    largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]) 应该返回 [27,5,39,1001].

    largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) 应该返回 [9, 35, 97, 1000000].

    方法一:使用辅助函数 largestOfArr()

    function largestOfFour(arr) {

       return arr.map(function(ele,i){

           return largestOfArr(ele);

    });

    }

    function largestOfArr(arr){

        var max = 0;

        var len = arr.length;

         for(var i = 0;i < len; i++ ){

             if(arr[i] > max){

                  max = arr[i];

                }

          }

    return max;

    }

    largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

    方法二:使用reduce和map

    function largestOfFour(mainArray) {

          return mainArray.map(function (subArray){

                return subArray.reduce(function (previousLargestNumber, currentLargestNumber) {

                          return (currentLargestNumber > previousLargestNumber) ?     currentLargestNumber : previousLargestNumber;

                            }, 0);

            });

    }

    largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

    代码解释:这里不过是用reduce方法代替了辅助函数。

    方法三:使用Math.max()

    function largestOfFour(mainArray) {

         return mainArray.map(function(subArray) {

                   return Math.max.apply(null, subArray);

        });

    }

    largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

    关于apply的详情查看MDN-apply中的例子部分

    相关文章

      网友评论

        本文标题:(三)FCC前端算法题Return Largest Number

        本文链接:https://www.haomeiwen.com/subject/iemlextx.html