#jquery #arrays
#jquery #массивы
Вопрос:
Чего мне нравится добиваться, так это:
var price = $.cookie('cur_price'); //this is USD, EUR or GBP
var price = 'USD'; //this could be an outcome
var USD = 30; //to put this in a array
var EUR = 24; //seems the right way
var GBP = 30;
var active = Get from array the value where price == array value
$('#price').html(active);
Как вы можете сделать это с помощью jQuery?
Комментарии:
1. Значит, значения переменных php являются массивами javascript?
2. Теперь я ввел в пример только числа, но php var . отобразил бы один numb. переменная.
3. Почему странный отступ? И совсем не понятно, что это за «это». О чем вы спрашиваете? И я думаю, вы путаете термин «цена» для «валюты»
Ответ №1:
Создайте объект, подобный ассоциативному массиву, для хранения цен:
var price = $.cookie('cur_price'); //this is USD, EUR or GBP
var prices = {
'USD': 30,
'EUR': 24,
'GBP': 30
};
$('#price').html(prices[price]);
Ответ №2:
Вместо использования массива я бы использовал объектный литерал, поскольку он позволяет сопоставлять ключи со значениями, а не произвольные индексы массива.
var price = $.cookie('cur_price');
var map = {
USD: 30,
EUR: 24,
GBP: 30
};
var active = map[price];
$('#price').html(active);
Кроме того, рассмотреть случай, когда cur_price
он еще не был установлен (первый визит?) возможно, вы захотите указать значение по умолчанию:
var price = $.cookie('cur_price');
var map = {
USD: 30,
EUR: 24,
GBP: 30
};
if (price == null) {
price = 'GBP';
}
var active = map[price];
$('#price').html(active);
Кроме того, имейте в виду, что JavaScript свободно редактируется клиентом; вы также должны проверять все входные данные на сервере (особенно когда речь идет о деньгах!).).
Комментарии:
1. Важно то, что вы используете объект. То, что вы инициализировали его с помощью литерала, не имеет значения ни здесь, ни там; указание на это просто помогает распространить миф о том, что «объектный литерал» — это какой-то волшебный тип фактического типа контейнера.
2. @Tomalakgeret’kal OTOH, поскольку «все в JavaScript является объектом», тот факт, что он использует объект, никоим образом не имеет значения.
3. @mblase75: Хорошо, тогда
Object
в отличие от экземпляра любого другого типа объекта. 🙂
Ответ №3:
var cookie = 'EUR';
var USD = 30; //to put this in a array
var EUR = 24; //seems the right way
var GBP = 30;
var active;
switch(cookie) {
case 'EUR':
active = EUR;
break;
case 'USD':
active = USD;
break;
case 'GBP':
active = GBP;
break;
default:
active = -1; // maybe?
break;
}
$('#price').html(active);