2013-06-20 6 views
3

всем! Я довольно новичок в Javascript, и я хотел бросить вызов себе, создав программу, которая будет определять, является ли введенное число простым. До сих пор это мой код:Как сделать много переменных в 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) { 

      } 
     } 

Я планирую сделать кучу переменных, каждый с именем, которое отличается от числа. Мне не нужен простой способ написать мой код. Итак, как мне заставить скрипт писать много разных переменных автоматически? Заранее спасибо!

ответ

5

Это звучит неплохо для использования массива. Это простой способ хранить множество значений в одном имени переменной, но вызывается индексом - числом. Проверьте страницу MDN для arrays.

Вот пример припрятать много значений в массиве:

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

Когда это будет сделано, туАггау будет иметь 100000 значения в нем. myArray[0] = 0, myArray[1] = 1, myArray[2] = 3, myArray[3] = 6, myArray[4] = 10 и т.д.

+1

одно слово: 'push' – Prinzhorn

+1

Я старая школа - я всегда забываю об этом. Я хотел убедиться, что существуют предсказуемые числовые индексы для значений, поскольку исходный вопрос включал эту идею. –

+0

как превратить массив в переменную, хотя – justinpchang

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; 
} 
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]);