2017-09-04 9 views
0

これを数時間試してみましたが、私はこの作業をするために何をしているのか見ていません。どんな助けもありがとうございます。 (イベントハンドラの動作と機能が数字の2のリストを渡すと呼ばれている)私はその後、私の外部のjsファイル内の関数を呼び出していますjavascript - ユーザーが入力した2つの配列から最大の番号を見つけよう

<input type = "text" id = "firstArray"><br/> 
<input type = "text" id = "secondArray"><br> 

:私は、次のHTMLを使用して、ユーザーからの数字の2のリストを取得しています

Answer = largestNumbers(document.getElementById("firstArray").value, 
     document.getElementById("secondArray").value); 

次に、私のjs関数では、配列の中に2つの配列を作成する配列に2つの数値のリストを付けます。私は各配列の最大数を見つけてその2つの数値を配列(largeList)に送り、その出力をconsole.logに送りたいと思っています。以下は、JS関数は次のとおりです。

function largestNumbers(arr, arr1) { 
    var otherArray = []; 
    var largeList = []; 
    otherArray[0] = arr.split(" "); 
    otherArray[1] = arr1.split(" "); 

    console.log("otherArray: " + otherArray); 
    for (var i = 0; i < otherArray.length; i++) { 
     var biggestNum = otherArray[i][0]; 
     for (var j=0; j < otherArray[i].length; j++) {  
      if (otherArray[i][j] > biggestNum) { 
       biggestNum = (otherArray[i][j]); 
       console.log("big num: " + biggestNum); 

      } 
     } 
    largeList[i] = biggestNum; 
    } 
    console.log(largeList); 
    return largeList; 
} 
+2

ここで 'Math.max'を使用すると何が問題になりますか?この宿題ですか? – raina77ow

+0

あなたは答えを見つけることができますhttps://stackoverflow.com/questions/1379553/how-might-i-find-the-largest-number-contained-in-a-javascript-array – itodd

+1

[ JavaScript配列に含まれる最大の数を見つけますか?](https://stackoverflow.com/questions/1379553/how-might-i-find-the-largest-number-contained-in-a-javascript-array) –

答えて

1

を使用することができます。

function getResult(){ 
 
var Answer = largestNumbers(document.getElementById("firstArray").value, 
 
     document.getElementById("secondArray").value); 
 
console.log(Answer); 
 
function largestNumbers(arr, arr1) { 
 
    var largeList = []; 
 
    var otherArray = []; 
 
    otherArray[0] = arr.split(" ").map(x=>{return parseInt(x)}); 
 
    otherArray[1] = arr1.split(" ").map(x=>{return parseInt(x)}); 
 
    debugger 
 
    largeList.push(Math.max.apply(null, otherArray[0])); 
 
    largeList.push(Math.max.apply(null, otherArray[1])); 
 
    
 
    return largeList; 
 
} 
 
}
<input type = "text" id = "firstArray"><br/> 
 
<input type = "text" id = "secondArray"><br> 
 
<button id='result' onclick='getResult()'>Get Largest</button>

配列要素は整数配列を作成しsplit(' ')、中に整数に変換されていることに注意してください。

+0

整数ではない場合はどうなりますか? '。map(Number) 'はもっと単純で、その前提を作らないでしょう。 –

+0

助けてくれてありがとう。この回答は私の元のコードに組み込むのが最も簡単でした。 – user2655352

+0

よろしくお願いします。 –

0

あなたは、配列内の最大値を取得するためMath.max.applyを使用することができますMath.max

function largestNumbers(arr, arr1) { 
    return [Math.max.apply(null, arr), Math.max.apply(null, arr1)]; 
} 
0

trim,splitmapの横にsortを使用できます。

例:sort機能なし

function getLargeFromInput(input) { 
 
    return input 
 
      .value // get input value 
 
      .trim() // remove spaces from edges 
 
      .split(" ") // convert to array 
 
      .map(Number) // convert array items to be numbers 
 
      .sort((x, y) => y - x) // sort DESC 
 
      [0] // get the largest value 
 
} 
 

 

 
function getLargest() { 
 
    
 
    var val1 = getLargeFromInput(document.querySelector('#inpt1')) 
 
    var val2 = getLargeFromInput(document.querySelector('#inpt2'))  
 
    var largeList= [val1, val2] 
 
    alert(largeList);  
 
        
 
}
<input id="inpt1" value="1 5 3 -9 44 6"><br> 
 
<input id="inpt2" value="7 23 1 77 33 1"> 
 
<br><br> 
 
<input type="button" value="Get largest" onclick="getLargest()">


別の解決策

function largestNumbers(val1, val2) { 
 
    var arr1 = val1.split(" ").map(Number), 
 
     arr2 = val2.split(" ").map(Number), 
 
     largeList = []; 
 
    
 
    for (var i = 0; i < arr1 .length; i+=1) 
 
     largeList[0] = largeList[0] < allNumbers[i]? allNumbers[i] : largeList[0] 
 
    
 
    for (var j = 0; i < arr2 .length; j+=1) 
 
     largeList[1] = largeList[1] < allNumbers[j]? allNumbers[1] : largeList[1] 
 
    
 
    return largeList;  
 
} 
 

 
function run() { 
 
    var largeList= largestNumbers(
 
       document.querySelector('#inpt1').value, 
 
       document.querySelector('#inpt2').value 
 
      ); 
 
    alert(largeList); 
 
}
<input id="inpt1" value="1 5 3 -9 44 6"> 
 
<br> 
 
<input id="inpt2" value="7 23 1 77 33 1"> 
 
<br><br> 
 
<input type="button" value="Get largest" onclick="run()">

関連する問題