Как вернуть массив в переменную вместо строки JavaScript

1
var i = 1

var pattern1 = ["apple", "pear", "orange", "carrot"]

var pattern2 = ["apple", "pear", "orange", "carrot"]

var currentPat = "pattern" + i

alert(currentPat)

Переменная currentPat возвращает строку pattern1, ее не возвращает массив. Что я делаю неправильно?

  • 2
    попробуйте pattern1[i] . Обратите внимание, что неработающий код не является хорошей заменой для подробного объяснения того, что вы пытаетесь достичь
  • 0
    Почему это должно возвращать что-то другое? Ваша переменная currentPat - это просто строка. Строка не имеет ничего общего с самим именем переменной.
Показать ещё 5 комментариев
Теги:

2 ответа

2

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

2

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

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"]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню