Создайте массив, сравните и получите из него значение

#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);