2015-01-05 3 views
1

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

в моем текущем сценарии, serviceLimit = 10;, но его можно было изменить в любое время.

Попытка # 1

var jqSvcPhrase = {}; 
for(i=1; i<=serviceLimit; i++) { 
    jqSvcPhrase[+ i +] = ''; // produces - Uncaught SyntaxError: Unexpected token ] 
} 

Попытка # 2

var jqSvcPhrase = {}; 
for(i=1; i<=serviceLimit; i++) { 
    jqSvcPhrase\[+ i +\] = ''; // produces - Uncaught SyntaxError: Unexpected token ILLEGAL 
} 

Попытка # 3

var jqSvcPhrase = {}; 
for(i=1; i<=serviceLimit; i++) { 
    jqSvcPhrase\\[+ i +\\] = ''; // produces - Uncaught SyntaxError: Unexpected token ILLEGAL 
} 
+0

i целое число не строка – sbaglieri

+0

Вы не пытаетесь сделать это в jQuery. Вы пытаетесь сделать это в Javascript ... –

ответ

1

i является целочисленным типом, поэтому не требует конкатенации. Попробуйте следующее:

var jqSvcPhrase = {}; 
for (i = 1; i <= serviceLimit; i++) { 
     jqSvcPhrase[i] = ''; 
} 
+0

спасибо @RoryMcCrossan - это сработало –

+0

Рад помочь :) –

1

Гм ... что со всеми + с?

var jqSvcPhrase = {}; 
for(i=1; i<=serviceLimit; i++) { 
    jqSvcPhrase[i] = ''; 
} 
+1

Просто копировал и вставлял предыдущий код, который работал. –

+0

Это сработало благодаря @Doorknob –

+1

@ H.Ferrence Означает ли это, что код был где-то оценен? Мне жаль ваш код D: – axelduch

1

Прежде всего вы объявляете объект, а не массив. Вместо этого должно быть var jqSvcPhrase = [];. Кроме того, + не требуется. Это должно быть jqSvcPhrase[i]

+2

Объекты по-прежнему доступны по индексу , –

+0

«Я хочу динамически инициализировать массив переменных [...]» - вы не сможете использовать функции массива, когда у вас есть объект. Если возможно, но лучше быть осторожным здесь – Fuzzyma

0

Зачем использовать фигурные скобки? Используйте квадратные скобки для массивов.

var jqSvcPhrase = []; 
for(i=1; i<=serviceLimit; i++) { 
     jqSvcPhrase[i] = ''; 
} 
0

массива Синтаксис (Manual):

[element0, element1, ..., elementN] 
new Array(element0, element1[, ...[, elementN]]) 
new Array(arrayLength) 

Это должно быть:

var jqSvcPhrase = new Array(serviceLimit); 

и было бы целесообразно, чтобы инициализировать значения:

for (x in jqSvcPhrase) { x = ''; } 
Смежные вопросы