2009-09-04 8 views
5

Al llamar a sort (función) en Javascript en un iPhone, no parece ordenar. Por ejemplo:Clasificación de Javascript con la función no funciona en el iPhone

devices.sort(function(a, b) { 
        return a.name > b.name; 
       }); 

¿Hay algunas limitaciones conocidas o alguien me puede ayudar a cómo hacer esto en un iPhone. Parece funcionar bien en Chrome, IE, Firefox.

función
+0

¿Funciona en Safari en Windows y/o Mac OS? –

Respuesta

0

El tipo tiene que devolver -1, 0 o 1.

devices.sort(function(a, b) { 
    if (a.name < b.name) { 
    return -1; 
    } else if (a.name == b.name) { 
    return 0; // ambiguous 
    } else { 
    return 1; 
    } 
}); 
+0

Además, consulte este binarySearch que le permite encontrar rápidamente elementos en grandes listas clasificadas utilizando una función de comparador personalizado. http://www.dweebd.com/javascript/binary-search-an-array-in-javascript/ –

0

tiene que devolver explícitamente -1, 0 o 1, según la definición de esta función supongo. Mi error.

    devices.sort(function(a, b) { 
        if (a.name < b.name) return -1; 
        if (a.name > b.name) return 1; 
        return 0; 
       }); 

Works now.

8

Su función de comparación se rompe: Se debe devolver un valor numérico que tiene que ser negativo si a < b, cero si a = b y positivo si a > b, es decir

function(a, b) { 
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; 
} 

Su función devuelve false si , que será convertido a 0 y por lo tanto significa que los valores deben considerarse como iguales. No debería funcionar en absoluto, pero si lo hace, esto es por coincidencia (es decir, depende del algoritmo de clasificación y/o conjunto de entrada).

Cuestiones relacionadas