2012-06-28 6 views
13

Есть ли способ сделать это из коробки с помощью метода _.sortBy или любой другой части библиотеки?Сортировка Магистральная коллекция в алфавитном порядке

+7

Ваш вопрос говорит Подчеркивание, но вы приняли ответ от Backbone. Я пришел на эту страницу, потому что я действительно ищу ответ подчёркивать, так что этот заголовок вводит в заблуждение. Пожалуйста, подумайте о внесении изменений в заголовок. –

ответ

10

Поскольку вы отметили свой вопрос тегом backbone.js, я предполагаю, что вы хотите сортировать коллекцию, вам просто нужно предоставить функцию comparator в вашей коллекции, и позвоночник сохранит сортировку коллекции.

Если ваш вопрос конкретно alphabeticical сортировки, я считаю, что это своего рода по умолчанию, из документации Backbone.js (я связан с ним выше)

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

Это на самом деле то, что мне нужно. Я не сталкивался с компараторами в документах, пока вы их не указали. Большое спасибо! –

25

Вы имеете в виду, как this?

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

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

Я бы сказал, что это работает из коробки.

Если вы хотите отсортировать обычный массив строк , вы, вероятно, просто хотите использовать sort:

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

flatArray.sort(); 

См here. Также работает.

Обратите внимание, что Underscore в sortBy возвращает новый массив, который сортируется, где JavaScript встроенный в sort функции сортирует массив на месте.

+1

Это очень полезный пример. Большое спасибо! – ducin

+0

_.sortBy() не будет работать правильно, если вы напишете «Морковь» с капиталом C. «Морковка» будет в первом индексе. http://jsfiddle.net/uHtUX/39/ – Andrej

+0

@Andrej "не будет работать правильно"? Я думаю, что довольно разумно, что функция сравнения по умолчанию, используемая для 'sortBy', будет следовать стандартным буквенно-цифровым упорядочениям (т. Е. Просто попробуйте' 'a' <'A'' и '' A' <'a'' в вашей веб-консоли). Если вы хотите нечувствительный к регистру сортировку, вы можете предоставить функцию для вызова 'toLowerCase' в значениях сначала, например: http://jsfiddle.net/uHtUX/40/ –

Смежные вопросы