2016-12-14 13 views
0

最高値を返します。変換リストに2つの項目の配列と私は、2つの数の配列を受け取るリストに配列を変換し、これら2つの数の最高を計算し、この値を返す関数を書かれている

function myFunction(arr) { 
 
    
 
    // Convert array into a list so we can use Math.max 
 
    var arrList = arr.join(); 
 
    
 
    // Returning the largest item in the list 
 
    var max = Math.max(arrList); 
 
    
 
    return max; 
 
} 
 

 
console.log(myFunction([1, 4]));

それは4を返す必要があります。しかし、私ははNaNを取得します。

+0

'join'は、文字列の中に、あなたの配列を変換さ –

+0

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/max =>配列からmaxを見つける方法を示す例があります。 – Barudar

+0

Math.max()関数は、0以上の数値のうち最大のものを返し、文字列を渡しています – Deep

答えて

1

それが動作しないのはなぜ?

Array#joinは文字列を返し、Math#maxは数字が必要なため、コードが機能しません。文字列なので結果はNaN(数字ではありません)です。

ソリューション

あなたは、配列を取り、そしてそれは、関数のパラメータとして値だ使用したい場合は、あなたがFunction#applyを使用することができます。

第一パラメータが呼び出される関数の中で使用されるthisあり、それはこの場合には関連していないですので、私はMathあるオリジナルを使用します。数字の配列 -

2 PARAMは、この場合には、関数パラメータに変換される配列です。 ES6で

var arr = [5, 3, 20, 15, 7]; 
 

 
function myFunction(arr) { 
 
    return Math.max.apply(Math, arr); 
 
} 
 

 
console.log(myFunction(arr));


あなたの代わりにspread syntax...を使用することができます。

var arr = [5, 3, 20, 15, 7]; 
 

 
function myFunction(arr) { 
 
    return Math.max(...arr); 
 
} 
 

 
console.log(myFunction(arr));

0

これは、ソースコードのように、動作しません。引数の配列にはFunction#applyを使用する必要があります。

function myFunction(arr) { 
 
    // Returning the largest item in the list 
 
    var max = Math.max.apply(null, arr); 
 
    return max; 
 
} 
 

 
console.log(myFunction([1, 4]));

関連する問題