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

Получение конкретного элемента из наблюдаемого массива

Это кажется легким, но через два часа у меня болит голова.

У меня есть categoryIndex (от select), и я хочу получить категорию из наблюдаемого массива, у которого есть этот Id.

Как я это делаю? Я пробовал с indexOf (но я не уверен, как это работает, и я смотрел документ, конечно), я попробовал linq.js, но там, где сложно использовать или Im глупо (я не знаю, как получить идентификатор из категории и сравните его).

Мой наблюдаемый массив это:

categories[category { Id=2,  Name="Pink", ...}, category { Id=1,  Name="Green",  ...}]

Итак, мне нужен только один способ получить категорию "Розовый", если мой индекс равен 2.

Спасибо.

EDIT:

viewModel.addNote = function() {
    var selectedCategoryIndex = $("#Categories").val();
    var selectedCategory = ko.utils.arrayFirst(this.categories(), function(item) {
        return item.Id === selectedCategoryIndex;
    });

}.bind(viewModel);
4b9b3361

Ответ 1

Обычно я использую функцию утилиты KO ko.utils.arrayFirst для выполнения этого типа вещей. Он просто перебирает массив и возвращает первый элемент, который соответствует предикату, переданному ему.

Вы бы использовали его следующим образом:

selectedId = 2;

var category = ko.utils.arrayFirst(categories(), function(category) {
   return category.Id === selectedId;
});