training remove observablearray knockout item from knockout.js

knockout.js - remove - ko js if



Obteniendo un elemento concreto de un observableArray (1)

Esto parece fácil pero después de dos horas me duele la cabeza.

Tengo un índice de categoría (de un selecto) y quiero obtener la categoría de un Array observable que tenga ese ID.

¿Cómo hago eso? Intenté con indexOf (pero no estoy seguro de cómo funciona y busqué el documento, por supuesto), probé linq.js pero el Dónde es difícil de usar o Im estúpido (no sé cómo obtener el ID de una categoría y compararlo).

Mi observableArray es esto:

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

Por lo tanto, solo necesito una forma de obtener la categoría "Rosa" si mi Índice es 2.

Gracias.

EDITAR:

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


Usualmente uso una función de utilidad KO ko.utils.arrayFirst para hacer este tipo de cosas. Simplemente recorre una matriz y devuelve el primer elemento que coincide con el predicado que se le pasó.

Lo usarías así:

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