jQuery grep возвращает многомерный массив

0

Я изучаю jQuery, и у меня возникают проблемы, пытаясь понять, как выбирать элементы в многомерном массиве. У меня есть список выбора с идентификаторами базы данных, и я хочу установить var с полем затрат в базе данных в соответствии с выбранным идентификатором. У меня есть все части, за исключением перевода выбранного идентификатора в стоимость. Может кто-то, пожалуйста, помогите мне с этим правильно, пожалуйста?

var rangeListData = [{"idrange_list":"1","range_cost":"0","target_range_name":"Self Only"},{"idrange_list":"2","range_cost":"1","target_range_name":"1 Space"},{"idrange_list":"3","range_cost":"2","target_range_name":"2 Spaces"},{"idrange_list":"4","range_cost":"3","target_range_name":"3 Spaces"},{"idrange_list":"5","range_cost":"4","target_range_name":"4 Spaces"},{"idrange_list":"6","range_cost":"5","target_range_name":"5 Spaces"}];

$('#slctPowerTarget').change(function () {
    var targetID = $('#slctPowerTarget').val();
    var cost $.grep(rangeListData, function(e) { return e.idrange_list == targetID }); // this is the line that is wrong
    $('#spanTotalEffectsCost').text(cost);

});

Если я помещаю targetID в то, где это стоимость, он перечисляет штраф. Но когда я пытаюсь понять это, ничего не происходит. Это некорректно, и я не уверен, что еще попробовать. Я думаю, что я понимаю, как idrange_list == targetID должен соответствовать им, но не уверен, как вызвать соответствующий range_cost.

Спасибо за любую помощь, которую вы можете предложить! Я читаю документы на jquery.com, но, похоже, не могу обернуть вокруг себя голову.

Теги:
arrays
multidimensional-array
grep

2 ответа

3
Лучший ответ

Вы можете сделать это :-

// Get the Multidimensional Array first
var data = $.grep(rangeListData, function (e) {
    return e.idrange_list === targetID
});

// Get the range cost from the array
var cost = data[0].range_cost;

// Check the value in console for debugging purpose
console.log(cost);
  • 1
    Отлично! Это добилось цели. Я вижу, что забыл выбрать то, что мне нужно, из объекта, который был отфильтрован. Поскольку было много объектов, а не просто стандартный массив. Мне нужно было найти объект, а затем найти то, что мне нужно в этом объекте. Это два шага в JQuery, кажется. Кроме того, я вижу, вы добавили ===, который был хороший звонок тоже. Спасибо за помощь в работе над этим новым языком для меня, лишенного сна!
  • 0
    Рад, что это помогло!
0

Вот окончательный код. Я также добавил предложение IF в том случае, если они выбирают настройку по умолчанию. Таким образом, он будет сброшен вместо того, чтобы бросать ошибку и следить за работой страниц независимо от того, изменяют ли они выпадающие списки или возвращаются к "Выбрать..."

$('#slctPowerRange').change(function () {
    var rangeID = $('#slctPowerRange').val();
    if (rangeID > 0) {
        var rdata = $.grep(rangeListData, function (e) { 
            return e.idrange_list === rangeID 
            });
        var rcost = rdata[0].range_cost;
    }
    else {
        var rcost = 0 ;
    }
    $('#hdnRangeCost').val(rcost);
});

Ещё вопросы

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