Подтвердить что ты не робот

Выбор из массива объектов на основе значения свойства в JavaScript

У меня есть объекты JSON, которые имеют несколько свойств, таких как id и name. Я храню их в массиве JavaScript, а затем на основе раскрывающегося списка хочу получить объект из массива JavaScript на основе его идентификатора.

Предположим, что у объекта есть id и имя, как его выбрать из моей переменной массива?

var ObjectsList = data;
var id = $("#DropDownList > option:selected").attr("value");
ObjectsList["id=" + id];
4b9b3361

Ответ 1

Поскольку у вас уже есть jQuery, вы можете использовать $.grep:

Находит элементы массива, которые удовлетворяют функции фильтра. Исходный массив не влияет.

Так что-то вроде этого:

var matches = $.grep(ObjectsList, function(e) { return e.id == id });

который оставит вам массив совпадающих записей из ObjectsList в массиве matches. Вышеприведенное предполагает, что ObjectsList имеет такую ​​структуру:

[
    { id: ... },
    { id: ... },
    ...
]

Если вы знаете, что есть только одно совпадение или вам нужно только первое, вы можете сделать это следующим образом:

for(var i = 0, m = null; i < ObjectsList.length; ++i) {
    if(ObjectsList[i].id != wanted_id)
        continue;
    m = a[i];
    break;
}
// m is now either null or the one you want

Существует много вариаций в подходе цикла for, и многие люди будут махать пальцем мне, потому что они думают, что continue является плохим словом; если вам не нравится continue, тогда вы можете сделать это следующим образом:

for(var i = 0, m = null; i < ObjectsList.length; ++i) {
    if(ObjectsList[i].id == wanted_id) {
        m = ObjectsList[i];
        break;
    }
}