2017-04-03 45 views
0

嘿,我正在为一项任务编写代码,并且我被卡住了。我的问题是,我想找到符合其的条件是一个数组中最大的有效号码,该号码为[0,500]之间整除5或3。这是我到目前为止有:我想从数组中选择最大的有效数字

var numlist =[]; 
var count = 0 ; 
var bignum; 


while (count >= 0) { 
    bignum = Number(prompt("Enter Number")); 

    if (bignum == 12345){ 
     break; 
    } 

    if (bignum > 500 || bignum < 0){ 
     document.write("No data to Print"); 
     continue; 
    } 

    if (!(bignum % 3 === 0 || bignum % 5 === 0)){ 
     document.write("No data to Print"); 
     continue; 
    } 

    numlist = Math.max(bignum); 
    bignum = numlist; 

    var loop; 

    for (loop = 0; loop <= 10; loop++){ 
     value = bignum * loop; 
     document.write(bignum + " X " + loop + " = " + value + "<br />"); 
    } 
} 

这里是分配和代码 prompt code

的例子有人能帮助我吗?

+0

@driconmax请阅读关于作业问题的这个元问题:https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-a nswer-homework-questions –

+0

@MarcMarchiavelli当你至少尝试过时(这是你的情况),你可以发布作业问题。 –

+0

如果你不尝试自己解决它,你不会去学习......他面临的问题是他需要练习的一部分... – driconmax

回答

0

在这里,这是一个方法来做到这一点。我试图改变它至少我可以这样做,你可以做到这一点“你的方式”。请稍微研究一下这段代码,然后自由地问你是否不理解某些东西。

var numlist = []; 
 
var bignum; 
 

 
// get the number and populate the array 
 
while (true) { // you don't need a var if you want an infinite loop 
 
    bignum = Number(prompt("Enter Number")); 
 

 
    if (bignum == 12345) { 
 
     break; 
 
    } 
 

 
    if (bignum > 500 || bignum < 0) { 
 
     continue; 
 
    } 
 

 
    if (!(bignum % 3 == 0 || bignum % 5 == 0)) { 
 
     continue; 
 
    } 
 

 
    numlist.push(bignum); // push method in an array includes a value 
 
} 
 
    
 
if (numlist.length == 0) { 
 
    document.getElementById('res').innerHTML = "No data to Print"; 
 
} else {  
 
    var max = -Infinity; 
 
    for(var ix = 0; ix<numlist.length; ix++) { 
 
    \t if (numlist[ix] > max) max = numlist[ix]; 
 
    } 
 
    
 
    var content = ''; 
 
    for (var loop = 0; loop <= 10; loop++) { 
 
     value = max * loop; 
 
     content += max + " X " + loop + " = " + value + "<br />";  
 
    } 
 
    document.getElementById('res').innerHTML = content; 
 
}
<div id="res"></div>

这里是它的一个更高级的版本供您,当您在的JavaScript更好地研究::)

var numlist = [], bignum; 
 
while ((bignum = Number(prompt("Enter Number"))) != 12345) 
 
    ((bignum > 0) && (bignum < 500)) && (!(bignum % 3) || !(bignum % 5)) && 
 
    \t numlist.push(bignum); 
 

 
var max = Math.max(...numlist) 
 
document.getElementById('res').innerHTML = 
 
    numlist.length && [...Array(11).keys()].reduce((p, _ign, ix)=> 
 
     p += max + " X " + ix + " = " + (max * ix) + "<br />", '') || 'No data to Print';
<div id="res"></div>

+0

非常感谢。这真的有帮助。 –

+0

如果它对你有用,请注意/接受答案。谢谢。 –

+1

几个指针。首先将代码分解为更小的函数。这会让你的代码更加可重用。其次,你可以使用'Math.max.apply(numList)'。它比循环更快。第三,由于这是一项任务,我们可以假定OP可能不知道扩散算子('...')。第四,在第二种方法中,最好使用'array.filter' – Rajesh