Javascript вычисляемые значения с массивами
JQuery Каждый вопрос о значениях JSON
Этот вопрос похож на приведенный выше, но не тот же самый, прежде чем он будет помечен как дублированный.
Поняв, как использовать вычисленные значения, я столкнулся с другой проблемой.
В моем JavaScript у меня есть следующий код:
var incidentWizard = ['page1.html','page2.html','page3.html'];
var magicWizard = ['page1.html','page2.html','page3.html'];
var loadedURL = 'page1.html';
Вход для этой функции будет (правда, "инцидент")
function(next,wizardname)
{
var WizSize = incidentWizard.length;
wizardName = [wizardName] + 'Wizard';
var wizardPOS = jQuery.inArray(loadedURL,incidentWizard);
А теперь я хочу использовать параметр wizardname, чтобы решить, какой массив я собираюсь использовать...
Loader(incidentWizard[wizardPOS],true);
Я тоже пробовал
Loader([incidentWizard][wizardPOS],true);
а также
Loader([incidentWizard][wizardPOS],true);
Также функция загрузчика просто требует строковое значение в массиве в WizardPOS извините за путаницу
Но когда я пытаюсь это сделать, я всегда получаю результат...
/incidentWizard
Я знаю, что это как-то связано с использованием вычисленных значений, но я попытался прочитать о них и не могу решить эту проблему.
В основном я хочу использовать вычисленное значение wizardName для доступа к массиву с таким именем.
Пожалуйста, помогите поддержки, с нетерпением ждем, чтобы увидеть много способов сделать это!
3 ответа
На этой линии:
wizardName = [wizardName] + 'Wizard';
Вы пытаетесь объединить строку "Wizard" в Array
с одним строковым элементом "инцидент". Я предполагаю, что вы просто хотите обычную конкатенацию строк:
wizardName = wizardName + 'Wizard';
Однако теперь у вас есть только строка, а не экземпляр массива. Чтобы это исправить, измените способ определения *Wizard
массивы что-то вроде:
var wizardyThings = {
incidentWizard : ['page1.html','page2.html','page3.html'],
magicWizard: ['page1.html','page2.html','page3.html']
};
Тогда ваша функция (которой не хватает имени в ее нынешнем виде) становится:
function someMethod(next, wizardname) {
wizardName = wizardName + 'Wizard';
var wizSize = wizardyThings[wizardName].length;
var wizardPOS = jQuery.inArray(loadedURL, wizardyThings[wizardName]);
...
}
Я бы просто поместил каждый массив как опору на объект:
var obj {
incidentWizard: ['page1.html','page2.html','page3.html'],
magicWizard: ['page1.html','page2.html','page3.html']
};
Тогда вы можете просто сделать obj['incidentWizard']
или же obj.incidentWizard
это вернется:
['page1.html','page2.html','page3.html']
Таким способом вы можете получить доступ только к свойствам объектов. Для глобальных ценностей window[ name ]
буду работать. Для простых локальных переменных это просто невозможно вообще. То есть, если внутри функции у вас есть
var something;
тогда нет никакой возможности получить эту переменную, если у вас есть только строка "что-то".