Сортировка и фильтрация json jQuery
Есть реляционная таблца данных. Данные я получаю в json. Эти данные отображаются на клиенсткой стороне таким образом что каждая строка стаблицы отображается в форме произвольно свестанных блоков <div> и ячеек <li>.
Есть так же в клиентском интерфейсе кнопки, которые отвечают за отбор и сортировку. Надо реализовать механизм, который позволит, скрывать/отображать часть блоков и изменять порядок следования. Признаки, по которым происходит сортировка и фильтр хранятся в значениях столбцов таблицы данных. Вариант, каждый раз выполнять ajax запрос и получать новый json набор данных - не подходит. Подскажите, как реализовать механизм, возможно на jQuery, для манипуляции даннми на клиентской части. Заранее спасибо. |
Не знаете как сортировать данные ?
В нете не мало инфы. Цитата:
jQuery Plugin - Dynamic Sorting, Paging and Filtering Product list / Portfolio. JQuery sort() |
Нашел такой код
var v = 'id'; $.fn.sort = function() { return this.pushStack( [].sort.apply( this, arguments ), []); }; function sortAlpha(a,b){ return a[v] * 1 < b[v] * 1 ? 1 : -1; }; json.sort(sortAlpha); Мне надо както модифицировать компаратор таким образом, чтобы он принимал 3 аргумент, ключ в json, по которому надо сравнивать объекты. Чтобы вызо выглядил таким образом json.sort(sortAlpha,'id'); function sortAlpha(a,b,v){ return a[v] * 1 < b[v] * 1 ? 1 : -1; }; как это сделать ? |
function sortBy (field, rev, fn) { field = field || false; rev = rev ? rev === true ? -1 : 1 : 1; fn = fn || false; return function (a, b) { if (field) { a = a[field]; b = b[field]; } if (fn) { a = fn(a); b = fn(b); } if (a < b) { return rev * -1; } if (a > b) { return rev; } return false; } } field - поле по которому идёт сортировка, rev - реверсия массива, fn - функция callback для доп действий Пример вызова: myArray.sort(sortBy("name")); ЗЫ: данный вариант не совсем "правильный", т.к. результирующая функция замыкается на внешней, т.е. потенциальна течёт память, но это можно исправить, если например обе функции сделать методом одного объекта, а связь между ними - через публичные свойства. |
kobezzza,
Спасибо. Просветлело )) |
Часовой пояс GMT +3, время: 02:22. |