天天看點

(三)FCC前端算法題Return Largest Numbers in Arrays

題目連結: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