Синтаксис для повторения сравнения одного массива со многими другими массивами с систематическим именем - PullRequest
0 голосов
/ 30 декабря 2011

У меня вопрос о правильном синтаксисе в итерационных функциях. Я хочу сравнить один мастер-массив с большим набором (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;}}

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

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

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

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

Или вы можете использовать медленное и злое прохождение:

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

for ( var i = 1; i < 3; i++ ){
  var scorespec;
  eval("scorespec = scorespec" + i);
  alert(scorespec);
}
0 голосов
/ 30 декабря 2011

Оператор 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, ваши логические значения, true и false, не должны быть прописными.

...