Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   "Как если бы это был код" (https://javascript.ru/forum/events/12007-kak-esli-ehto-byl-kod.html)

daMage 26.09.2010 00:04

"Как если бы это был код"
 
Есть массив history_date_db.
var history_date_db = [];
history_date_db['988'] = 'Дата крещения Руси';

По ходу выполнения программы, в три переменные записываются значения.
var lesson; //history
var what; //date
var request;//988

По нажатию на кнопку срабатывает функция, в которой идёт проверка:
if(history_date_db['988']) {
	alert(history_date_db['988']);
}

Могу ли я переписать данную функцию иным способом:
if(lesson + '_' + what + '_db' + [request]) {
	alert(lesson + '_' + what + '_db' + [request]);
}

И если можно, то почему у меня не пошло?

Kolyaj 26.09.2010 00:19

Цитата:

Сообщение от daMage
Есть массив history_date_db.

Что ж вы через жопу-то делаете. Откуда вообще появляется желание собирать имена переменных из кусков? Для этого хэши придумали.

var lessons = {
    history: {
        date: {
            998: 'Дата крещения Руси',
            2010: 'Ещё одна дата'
        }
    }
};

if (lessons[lesson] && lessons[lesson][what] && lessons[lesson][what][request]) {
    alert(lessons[lesson][what][request]);
}

daMage 26.09.2010 00:32

Спасибо

HelpeR 30.09.2010 10:13

daMage, ваш вариант можно выполнить с помощью eval
if(eval(lesson + '_' + what + '_db[' + request + ']')) {
    alert(eval(lesson + '_' + what + '_db[' + request + ']'));
}

Kolyaj 30.09.2010 11:27

Только не нужно.


Часовой пояс GMT +3, время: 07:43.