var i = 1
var pattern1 = ["apple", "pear", "orange", "carrot"]
var pattern2 = ["apple", "pear", "orange", "carrot"]
var currentPat = "pattern" + i
alert(currentPat)
Переменная currentPat возвращает строку pattern1, ее не возвращает массив. Что я делаю неправильно?
У вас должны быть шаблоны как 2 элемента массива, и вы можете использовать это:
var i = 1
var pattern = [];
pattern[1] = ["apple", "pear", "orange", "carrot"]
pattern[2] = ["apple", "pear", "orange", "carrot"]
var currentPat = pattern[i]
alert(currentPat)
Если вы не можете изменить способ определения шаблонов, вы можете использовать eval("pattern"+i)
но это не рекомендуется, так как это затрудняет чтение кода и может привести к некоторым проблемам безопасности при использовании с пользовательским вводом.
Чтобы использовать имя свойства переменной, вам нужно получить доступ к этому синтаксису с квадратными скобками:
var i = 1
var pattern1 = ["apple", "pear", "orange", "carrot"]
var pattern2 = ["apple", "pear", "orange", "carrot"]
var currentPat = window["pattern" + i]
console.log(currentPat)
Так как pattern1
и pattern2
глобальные переменные в вашем примере, они автоматически становятся свойствами глобального объекта (который в браузере, является window
объекта).
window.pattern1
делает то же самое, что и
var prop = "pattern1"
window[prop]
или как
window["pattern1"]
pattern1[i]
. Обратите внимание, что неработающий код не является хорошей заменой для подробного объяснения того, что вы пытаетесь достичь