Как из текста сделать переменную в Javascript
Недавно возникла потребность вызвать функцию (условно обозначим функцию foo()) от повторяющихся переменных (например str1, str2, str3, ... , str93). И чтобы не писать 93 вывода в консоль, я решил передавать в функцию параметры в виде строки из частички arr и итератора i
// Тут объявляем эти 93 строки
let str1 = "ahfsGv s@!uuyyt"
let str2 = "kjl;sad543aVnn"
let str3 ="j hdgf "
...
let str93 = "aP)($53"
function foo(str) {
// Тут манипуляции с принимаемой строкой, но они нам не важны
}
for (let i = 0; i < 93; i++;) {
// Я даже завёл отдельную переменную чтобы вынести этот шаблон параметра
let param = `arr${i}`
// И здесь появилась проблема
console.log(foo(param))
}
Как мне передать в функцию параметр, который сейчас в виде строки, или как перевести строку в готовую переменную для последующей её передачи в функции?
На сегодня само задание по манипуляции с 93-мя строками выполнено, но другим способом, а я бы, всё-таки, хотел узнать как сделать из строки полноценную переменную, которую можно было бы передать в мою(да и не только) функцию. Заранее благодарю за ответ!!!
Ответы (2 шт):
// Тут объявляем 1 массив из 93 строк
let arr = [
"ahfsGv s@!uuyyt",
"kjl;sad543aVnn",
"j hdgf ",
...
"aP)($53"
];
function foo(str) {
// Тут манипуляции с принимаемой строкой, но они нам не важны
}
for (let i = 0; i < arr.length; i++;) {
// Я даже завёл отдельную переменную чтобы вынести этот шаблон параметра
let param = arr[i];
// И здесь проблем нет
console.log(foo(param))
}
Касаемо ответа на ваш вопрос:
let s = 'name';
let name = 'bar';
console.log(eval(s));
Но, НИКОГДА так НЕ делайте.
Предложу другой вариант без eval
Вариант который не работает
console.log(str1);
console.log(str2);
console.log(str3);
//... мне лень
console.log(str92);
Вариант который работает
//объявляем переменные str1 str2
for(let i = 1; i < 93; i++){
window["str" + i] = "some text " + i * i;
}
console.log(str1);
console.log(str2);
console.log(str3);
//... мне лень
console.log(str92);
ну и продолжая усложнять можно придумать такое, и передать в параметры какого нибудь метода
//объявляем переменные str0 str1
window["fibonacci" + 0] = 0n;
window["fibonacci" + 1] = 1n;
for(let i = 2; i < 93; i++){
window["fibonacci" + i] = window["fibonacci" + (i - 1)] + window["fibonacci" + (i - 2)];
}
print(fibonacci0);
print(fibonacci1);
print(fibonacci2);
print(fibonacci3);
//... мне лень
print(fibonacci90);
print(fibonacci91);
print(fibonacci92);
function print(arg){
console.log(arg.toString())
}