2011-12-30 1 views
0

У меня вопрос о правильном синтаксисе в итеративных функциях. Я хочу сравнить один главный массив с большим набором (180+) других массивов. Большой набор массивов, которые нужно сравнить, систематически называют (scorespec1, scorespec2, scorespec3 ...). Каждое сравнение будет выполняться не один-к-одному, а через алгоритм, а затем результаты сохраняются в другом наборе массивов, которые также систематически называются для более позднего запроса. Я пока не беспокоился о том, чтобы получить алгоритм. Я просто не уверен в правильном синтаксисе для итерации через мои массивы. Например, это всего лишь один из синтаксических структур, которые я попробовал, но не смог получить работу:Синтаксис для итерации сравнения одного массива ко многим другим системно названным массивам

for (i=01;i=186;i++){ 
    if (scorespec+(i)[04]=unknownspec[16]){ 
    resultarray+(i)[01]=True; 
    else 
    resultarray+(i)[01]=False;}} 

Моя главная проблема здесь я не знаю, как структурировать синтаксис, чтобы включить переменную счетчика в моей для -loop в имени переменной. Я пробовал различные синтаксисы в дополнение к тому, что я показываю выше, и он просто не работает правильно. Какой синтаксис я должен использовать?

ответ

0

Есть три части for заявления:

for ([initialExpression]; [condition]; [incrementExpression]) { 
    // The statement (i.e. what will happen on each iteration) 
} 

перебрать массив, нам нужна длина массива и счетчик, который будет двигаться по направлению к этой длине перебираемый. Это обычная картина:

var myArray = ['foo', 'bar', 'far']; //... 

for (var i = 0; i < myArray.length; i++) { 
    myArray[i]; // <- this is the current array item 
} 

Это разумно кэшировать длину массива следующим образом:

for (var i = 0, l = myArray.length; i < l; i++) { 
    myArray[i]; // <- this is the current array item 
} 

Кроме того, FYI, ваши булевы, истинные и ложные, не должны быть капитализированы.

+0

Спасибо за совет по капитализация. Тем не менее, я не пытаюсь перебирать элементы в массиве, но через набор массивов с похожими именами (scaorespec1, scorespec2, scorespec3 ...) Спасибо. – WyoBuckeye

0

Если бы вы объявили ваш массив в глобальном масштабе можно получить доступ к ним с помощью объекта окна:

var scorespec1 = "123"; 
var scorespec2 = "456"; 

for (var i = 1; i < 3; i++){ 
    alert(window['scorespec' + i]); 
} 

Или вы могли бы использовать медленный и злой Eval:

var scorespec1 = "123"; 
var scorespec2 = "456"; 

for (var i = 1; i < 3; i++){ 
    var scorespec; 
    eval("scorespec = scorespec" + i); 
    alert(scorespec); 
} 
+0

Но как насчет того, когда переменные являются массивами? Например, следует ли использовать этот синтаксис? alert (window ['scorespec' + i [01]]) – WyoBuckeye

+0

window ['scorespec' + i] [1] – jantimon