2017-09-04 23 views
0

輸入2個陣列我試過這出了幾個小時的最大數量,但我不明白我在做什麼或不做,使這項工作。任何幫助表示讚賞。的JavaScript - 查找用戶

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

我然後調用我的外部JS文件中的函數(事件處理程序的工作原理和功能被稱爲通過數目的2列表):我現在用的是下面的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

可以使用Math.max.apply用於獲取數組中的最大值。

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

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

您可以使用sort旁邊的trim,split,map功能。

例:

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()">


另一種解決方案,而不sort功能

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()">