3

每个人!我是 Javascript 的新手,我想通过制作一个程序来挑战自己,该程序将确定输入的数字是否为素数。到目前为止,这是我的代码:

var a = prompt('What should the number be?');
var n = parseInt(a);           
var counter = n - 1;
var b = n/counter;
var c = Math.floor(b);
if (n < 1) {
            window.alert('Invalid: negative numbers are neither prime nor composite!');
        }
        if (n === 1){
            window.alert('1 is neither prime nor composite!');
        } else {
            if (b-c != 0) {

            }
        }

我打算制作一堆变量,每个变量的名称都相差一个数字。我不需要更简单或不同的方式来编写我的代码。那么如何让脚本自动编写许多不同的变量呢?提前致谢!

4

3 回答 3

5

这听起来像是使用数组的好例子。这是一种在同一个变量名中存储大量值的简单方法,但由索引调用 - 一个数字。查看 MDN 页面中的数组

这是一个在数组中存储大量值的示例:

var bigNumber = 100000;
var myArray = new Array();
var tally = 0;
for( i = 0; i < bigNumber; i++ )
{
    tally += i;
    myArray[i] = tally;
}

完成后,myArray 中将包含 100000 个值。 myArray[0] = 0, myArray[1] = 1, myArray[2] = 3, myArray[3] = 6,myArray[4] = 10

于 2013-06-20T14:47:27.390 回答
2

我不认为你的问题是变量太多。您应该使用函数来分隔具有不同目的的代码部分:

function isPrime(n) {
    var counter = n - 1;
    var b = n / counter;
    var c = Math.floor(b);
    if (n < 1) {
        return false;
    }
    if (n === 1) {
        return false;
    } else {
        if (b - c != 0) {

        }
    }
}


var n = parseInt(prompt('What should the number be?'));
alert('The given number ' + n + ' is ' + (isPrime(n) ? '' : ' not') + ' a prime.');

或者

function PrimeChecker(){
    var n = this.readNumber();
    this.displayResult(n, this.isPrime(n));
}
PrimeChecker.prototype = {
    readNumber: function (){
        return parseInt(prompt('What should the number be?'));
    },
    isPrime: function (n) {
        var counter = n - 1;
        var b = n / counter;
        var c = Math.floor(b);
        if (n < 1) {
            return false;
        }
        if (n === 1) {
            return false;
        } else {
            if (b - c != 0) {

            }
        }
    },
    displayResult: function (n, isPrime){
        alert('The given number ' + n + ' is ' + (isPrime ? '' : ' not') + ' a prime.');
    }
};

new PrimeChecker();

如果你想对变量进行分组,你仍然可以使用一个对象来存储它们:

var map = {
    a: 1,
    b: 2,
    c: 3
};
map.d = 4;
map.e = 5;
alert(map.e);

如果生成没有名称的变量,可以使用数组:

var array= [
    "a",
    "b",
    "c"
];
array.push("d");
array.push("e");
alert(array[4]);
于 2013-06-20T15:05:18.767 回答
0

邪恶的做法是在全局对象(窗口)上创建变量,如下所示:

// This is bad because it pollutes the global namespace:
for (var i = 0; i < 10; i++) {
  window['num' + i] = i;
}

更好的方法是创建一个空对象并将其用作变量的命名空间。

var o = {};
for (var i = 0; i < 10; i++) {
  o['num' + i] = i;
}
于 2013-06-20T14:47:53.993 回答