Todos los ejemplos que veo de utilizar el método IndexOf() en KnockoutJS son básicos los tipos de cadena. Lo que quiero saber es cómo se devuelve el índice de un array es un objeto, basado en una de las variables de objeto.

InformationsquelleAutor user656822 | 2011-08-03

1 Comentario

  1. 66

    Un observableArray expone un método llamado indexOf, que es un contenedor para ko.utils.arrayIndexOf que simplemente se recorre la matriz buscando el elemento que le pasa.

    Así que, si tienes el artículo que usted 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 usted acaba de tener algo como una llave, a continuación, KO tiene una función de utilidad llamada ko.utils.arrayFirst que sólo se recorre la matriz tratando de coincidir con la condición de que le pasa. Sin embargo, devuelve el elemento y no el índice de la misma. Sería ligeramente ineficaz para conseguir el objeto y, a continuación, llamar a indexOf en él, como haría dos pasa a través de la matriz.

    Que sólo podría escribir un bucle buscando el elemento correcto o escribir una función genérica basada en ko.utils.arrayFirst que se vería como:

    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, usted puede pasar una matriz, una condición, y se devuelve el índice del primer elemento que coincida con.

    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
    • En su ejemplo, no debe devolver el artículo.id === id; ser devolver el artículo.id() === id;? Estoy tratando de hacer algo muy parecido a este y tuvo que tenía el ().
    • Sólo depende de si id es observable o no. En este caso no lo es, pero suena como usted es.

Dejar respuesta

Please enter your comment!
Please enter your name here