2012-06-28 24 views
13

¿Hay alguna manera de hacer esto de la caja con el método _.sortBy o cualquier otra parte de la biblioteca?Ordenar la colección de Backbone alfabéticamente

+7

Su pregunta dice Subrayado, pero acepté una respuesta de Columna vertebral. Llegué a esta página porque en realidad estoy buscando una respuesta de subrayado, por lo que este título es engañoso. Por favor, considere enmendar el título. –

Respuesta

10

Dado que etiquetó su pregunta con la etiqueta backbone.js, asumo que quiere clasificar una colección, solo necesita proporcionar una función comparator en su colección y la columna vertebral mantendrá la colección ordenada.

Si su pregunta es la clasificación específicamente alphabeticical, creo que es el tipo por defecto, a partir de la documentación Backbone.js (he vinculado a la misma por encima de)

chapters.comparator = function(chapter) { 
    return chapter.get("page"); 
}; 
+1

Esto es exactamente lo que necesitaba. No me había topado con los comparadores en los documentos hasta que los señalaste. ¡Muchas gracias! –

25

¿Quiere decir this?

var array = [ 
    { name: "banana" }, 
    { name: "carrot" }, 
    { name: "apple" } 
]; 

var sorted = _(array).sortBy("name"); 

diría que funciona fuera de la caja.

Si queremos ordenar una matriz común de cuerdas, es probable que sólo quieren utilizar sort:

var flatArray = ["banana", "carrot", "apple"]; 

flatArray.sort(); 

Ver here. También funciona.

Tenga en cuenta que de Guión bajo sortBy devuelve una nueva de matriz que se clasifica, donde JavaScript incorporado en sort función ordena una matriz en su lugar.

+1

Este es un ejemplo muy útil. ¡Muchas gracias! – ducin

+0

_.sortBy() no funcionará correctamente si escribe "Zanahoria" con mayúscula C. "Zanahoria" estará en el primer índice. http://jsfiddle.net/uHtUX/39/ – Andrej

+0

@Andrej "no funcionará correctamente"? Creo que es bastante razonable que la función de comparación predeterminada utilizada para 'sortBy' siga el orden alfanumérico estándar (es decir, intente con''a '' 'A'' frente a '' A '' 'a'' en su consola web). Si desea una clasificación que no distinga entre mayúsculas y minúsculas, podría proporcionar una función para llamar primero a 'toLowerCase' en los valores, como este: http://jsfiddle.net/uHtUX/40/ –

Cuestiones relacionadas