Todos los ejemplos que veo de usar el método IndexOf() en KnockoutJS son de tipos de cadenas básicas. Lo que quiero saber es cómo devolver el índice de una matriz que es un objeto, en función de una de las variables del objeto.Cómo usar indexOf en KnockoutJS
Respuesta
Un observableArray expone un método llamado indexOf
, que es un contenedor a ko.utils.arrayIndexOf
que simplemente recorre el conjunto en busca del elemento que le pasa.
Por lo tanto, si usted tiene el elemento que puede hacer:
var viewModel = {
items: ko.observableArray([{id: 1, name: "one"}, {id:2, name: "two"}])
};
var item = viewModel.items()[1];
console.log(viewModel.items.indexOf(item)); //equals 1
Si sólo tiene algo así como una clave, a continuación, KO tiene una función de utilidad llamada ko.utils.arrayFirst
que acaba de bucle a través de la matriz tratando de igualar la condición de que pases a ella. Sin embargo, devuelve el artículo y no el índice del mismo. Sería ligeramente ineficiente obtener el objeto y luego llamar a indexOf sobre él, ya que haría dos pasadas a través de la matriz.
Se podía escribir un ciclo de uno mismo y el artículo correcto o escribir una función genérica basada en ko.utils.arrayFirst que se vería así:
function arrayFirstIndexOf(array, predicate, predicateOwner) {
for (var i = 0, j = array.length; i < j; i++) {
if (predicate.call(predicateOwner, array[i])) {
return i;
}
}
return -1;
}
Ahora, puede pasar una matriz, una condición , y se le devolverá el índice del primer artículo que coincida.
var viewModel = {
items: ko.observableArray([{
id: 1,
name: "one"},
{
id: 2,
name: "two"}])
};
var id = 2;
console.log(arrayFirstIndexOf(viewModel.items(), function(item) {
return item.id === id;
})); //returns 1
- 1. problemas para usar indexOf en un complejo conjunto
- 2. Javascript indexOf
- 3. dividir knockoutjs
- 4. Función IndexOf en T-SQL
- 5. NSString indexOf en Objective-C
- 6. C# subcadena indexOf
- 7. jQuery indexOf function?
- 8. ¿Predicado de IndexOf?
- 9. indexOf no funciona
- 10. Collections.binarySearch() vs. Lista indexOf()
- 11. cadena IndexOf y reemplazar
- 12. ¿Cómo funciona Javascript's IndexOf() resolver referencias
- 13. indexOf sintaxis para matrices multidimensionales?
- 14. JavaScript indexOf() - cómo conseguir índice específico
- 15. IndexOf con array de Strings en VB.NET
- 16. Javascript indexOf en una matriz de objetos
- 17. KnockoutJS - Rebinding ViewModel
- 18. KnockoutJS Memory Leak
- 19. Usando una Plantilla externa en KnockoutJS
- 20. progresiva con KnockoutJS
- 21. Cómo reparar Array indexOf() en JavaScript para navegadores Internet Explorer
- 22. indexOf para el espacio en la cadena
- 23. IndexOf no admitido en IE8 Browser
- 24. mysql get substring offset (indexOf)?
- 25. Regex en java y su rendimiento en comparación con indexOf
- 26. KnockoutJS: El componente SimpleGrid
- 27. Google maps y knockoutjs
- 28. KnockoutJS y plantilla recursiva
- 29. eliminar de observableArray- knockoutjs
- 30. ¿Por qué IndexOf devuelve -1?
En su ejemplo, no debe devolver item.id === id; ser devuelto item.id() === id ;? Estoy intentando hacer algo muy parecido a esto y tuve que tener el(). – NullReference
Solo depende si 'id' es observable o no. En este caso no es así, pero suena como lo es para ti. –