2015-11-27 63 views
0

剛開始學習JavaScriptJavascript var提示進入Array,document.write(Max/Min/Average);

示例代碼:

while() { 

var int1 = parseInt(prompt("Enter 1st number")); 

var int2 = parseInt(prompt("Enter 2nd number")); 

var int3 = parseInt(prompt("Enter 3rd number")); 

var final = (int1 * 2) + (int2 * 3) + (int3 * 4); 

document.write(final); 

} 

這提示過程將回路可以說3次。將會顯示3個var最終值。

如何將3個var最終值存儲到數組中,然後使用document.write顯示最高的var最終值,最低的var最終值和平均var最終值。

+0

什麼是你,而這樣做面臨的問題?在循環之前創建一個數組,並將結果推送到每個結果中的數組。然後迭代後,計算所需的信息,然後顯示在屏幕上。 – niyasc

回答

1

循環並將其推入陣列就像這樣;

var checkNumber = true, // Create a variable that eqausl true to start the while loop 
    array = []; // creating the array 

// Whenever checkNumber is true start! 
while(checkNumber) { 

var int1 = parseInt(prompt("Enter 1st number")); 
array.push(int1) // Push int1 into the array 
var int2 = parseInt(prompt("Enter 2nd number")); 
array.push(int2) // Push int2 into the array 
var int3 = parseInt(prompt("Enter 3rd number")); 
array.push(int3) // Push int3 into the array 
var final = (int1 * 2) + (int2 * 3) + (int3 * 4); 
// Or like you have in final 
// array.push(int1 * 2) 
// Same for the rest! 


// Checking with Math.max which number is greater 
var largest = Math.max.apply(Math, array); 

alert(largest); 

// Change the variable checkNumber to false to avoid a loop  
checkNumber = false; 

} 
0

在循環外聲明一個數組變量。將它推到像{iteration: i, value: ''}這樣的格式的數組中,然後使用item.value對具有比較功能的循環進行排序。

+0

謝謝,但你能分享一個參考我的例子代碼?我真的是初學者!非常感激!! – LegoCamel

1

實際上,您提供的代碼要求在while()循環的每個週期內輸入3個輸入。因此,如果您只需要3個號碼,那麼您將不需要0​​循環。

我已經用2個函數寫出了一組真正基本的代碼,它們在數組中找到最大值和最小值。

var totalSum = 0; 
// initialize the array with 0s. 
var inputNums = [0, 0, 0]; 

// Loop through the input number array and ask for a number each time. 
for (var i = 0; i < inputNums.length; i++) { 
    inputNums[i] = parseInt(prompt("Enter Number #" + (i + 1))); 
    //Add the number to the total sum 
    totalSum = totalSum + inputNums[i]; 
} 

// Calculate results 
var average = totalSum/inputNums.length; 

document.write("Total Inputs: " + inputNums.length + "<br>"); 
document.write("Sum: " + totalSum + "<br>"); 
document.write("Average: " + average + "<br>"); 
document.write("Max: " + findMaxValue(inputNums) + "<br>"); 
document.write("Min: " + findMinValue(inputNums) + "<br>"); 

function findMaxValue(numArray) { 
    // Initialize with first element in the array 
    var result = numArray[0]; 

    for(var i = 1; i < numArray.length; i++) { 
     // loops through each element in the array and stores it if it is the largest 
     if(result < numArray[i]) { 
      result = numArray[i]; 
     } 
    } 
    return result; 
} 

function findMinValue(numArray) { 
    // Initialize with first element in the array 
    var result = numArray[0]; 

    for(var i = 1; i < numArray.length; i++) { 
     // loops through each element in the array and stores it if it is the smallest 
     if(result > numArray[i]) { 
      result = numArray[i]; 
     } 
    } 
    return result; 
} 

不幸的是,SO中的片段系統不支持prompt()

我在這裏提出了一個的jsfiddle:https://jsfiddle.net/hrt7b0jb/

+0

謝謝你的回答!然而,我的循環不是基於固定的次數,而是提示用戶選擇要輸入的整數的「數量」。 – LegoCamel

+0

這很簡單。我寫了上面的代碼,儘可能靈活。你只需要修改數組var inputNums的聲明。 – shrmn

+0

非常感謝:) – LegoCamel

0

您可以使用下面的代碼。

注意我已經修改了Array對象的原型,以添加兩種新方法來獲取最小值和最大值(從this answer中提取)。如果您需要增強此解決方案,則必須稍微更改代碼。

Array.prototype.max = function() { 
    return Math.max.apply(null, this); 
}; 

Array.prototype.min = function() { 
    return Math.min.apply(null, this); 
}; 

var arr = []; 

arr[0] = parseInt(prompt("Enter 1st number")); 

arr[1] = parseInt(prompt("Enter 2nd number")); 

arr[2] = parseInt(prompt("Enter 3rd number")); 

var final = (arr[0] * 2) + (arr[1] * 3) + (arr[2] * 4); 


document.write(final + "<br/>"); 
document.write(Math.min.apply(null, arr) + "<br/>"); 
document.write(Math.max.apply(null, arr) + "<br/>"); 
document.write(arr.reduce(add, 0)); 

function add(a, b) { 
    return a + b; 
} 

鏈接的jsfiddle http://jsfiddle.net/gveuenhh/

0
var array = []; 
while() { 

var int1 = parseInt(prompt("Enter 1st number")); 

var int2 = parseInt(prompt("Enter 2nd number")); 

var int3 = parseInt(prompt("Enter 3rd number")); 

var final = (int1 * 2) + (int2 * 3) + (int3 * 4); 

array.push(final); 

document.write(final); 

} 
var min = array[0], max = array[0]; 
for(var i = 0; i < array.length; i++){ 
    console.log(min, max) 
if(min > array[i+1]){ 
console.log("if") 
min = array[i+1] 
} 
else if(max < array[i+1]){ 
console.log("elseif") 
max = array[i+1] 
} 
else{} 
}