Возможна ли вторичная сортировка по изотопу?

Я разобрался с кодом сортировки, и он работает, как и ожидалось. Мне нравится вариант вторичного фильтра.

У меня есть серия вроде:

<div id="member1" class="sortItem" data-factor="2">
    <span class="name">Jobs</span>
</div>
<div id="member2" class="sortItem" data-factor="2">
    <span class="name">Wayne</span>
</div>
<div id="member3" class="sortItem" data-factor="3">
    <span class="name">Wozniak</span>
</div>

Итак, если я сортирую по фактору данных, я получаю (сокращенно):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Wayne           2
Jobs            2

Но мне бы хотелось, чтобы вторичная сортировка всегда была в алфавитном порядке, например:

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Jobs            2
Wayne           2

и обратная сортировка по фактору данных (снова нажмите кнопку сортировки):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Jobs            2
Wayne           2
Wozniak         3

Любые идеи о том, как реализовать второй вид?

Ваше здоровье!


person roberthuttinger    schedule 08.02.2013    source источник


Ответы (2)


Методы сортировки просто возвращают строку или число, которое будет отсортировано в алфавитном или числовом порядке.

Если вы хотите объединить оба, наименьшим общим знаменателем является строка.

Единственная оставшаяся проблема - как сделать, чтобы числа сортировались по алфавиту. Вы можете сделать это, добавив ведущие 0, чтобы дополнить их. В зависимости от размера ваших коллекций вам может понадобиться 1, 2 или 3 цифры.

e.g.

Для 3 цифр (до 1000 элементов) ваши ключи сортировки становятся примерно такими:

003Wozniak
002Jobs
002Wayne

Который будет сортировать так, как вы намереваетесь.

person Gone Coding    schedule 16.05.2013
comment
самый простой ответ был перед глазами... это задача леса сквозь деревья. все так устроено. спасибо за элегантное, но простое решение. Я слишком много думал о проблеме - person roberthuttinger; 16.05.2013
comment
часто кажется, что самое популярное решение — давайте вырубим весь лес и пойдем оттуда :) - person Gone Coding; 17.05.2013

На самом деле, вы можете сортировать по нескольким параметрам, посмотрите примеры getSortData на веб-сайте изотопов...

getSortData: {
    sort1: function($elem) {
        return parseInt($elem.attr('data-category-sort1'), 10);
    },
    bywidth: function($elem) {
        return $elem.width();
    },
    byname: function($elem) {
        return $elem.find('.name').text();
    }
    // more...
}
person guideX    schedule 21.11.2013