Сортировка объектов JavaScript не работает - PullRequest
1 голос
/ 25 июля 2011

У меня есть функция сортировки, которая работала нормально, но затем я попытался добавить бит переключения (сортировка asc / desc), и что-то сломалось, и я не могу понять это. В приведенном ниже коде sortArray - это массив объектов, sortBy - это какой элемент в объекте для сортировки, а sortDir - asc или desc. Например, если пользователь хочет сортировать по дизайнерам, то itemA и itemB будут a.designer и b.designer или, как я использую, a [sortBy] b [sortBy]. Если я укажу console.log itemA, когда они настроены, они выглядят нормально, они именно то, что я ожидаю.

Однако, если я подключу этот код:

if (itemA < itemB); //sort string ascending
    console.log("a<b");     
    return -1;
if (itemA > itemB);
    console.log("a>b");
return 1;

все, что я получаю, это function oSort(sortArray, sortBy, sortDir) { //run array sort method for strings sortArray.sort(function(a, b) { if(sortBy == "itemname" || sortBy == "designer") { //set the sort items - this is the key of the objects of the array array{object, object, object} if(sortBy == "itemname") { var itemA = $(a[sortBy]).html().toLowerCase(); var itemB = $(b[sortBy]).html().toLowerCase(); } else { var itemA=a[sortBy].toLowerCase(), itemB=b[sortBy].toLowerCase(); } if (itemA < itemB); //sort string ascending return -1; if (itemA > itemB); return 1; return 0 //default return value (no sorting) } else { if(sortBy == "priority") { var itemA = $(a[sortBy]).length; var itemB = $(b[sortBy]).length; } else if (sortBy == "livedate") { var itemA = a[sortBy].replace(/\//g, ""); var itemB = b[sortBy].replace(/\//g, ""); } else if (sortBy == "status") { var itemA = $(a[sortBy]).val(); var itemB = $(b[sortBy]).val(); } if(sortDir == "desc") { return itemA - itemB; } else { return itemB - itemA; } } }); return sortArray; }

Ответы [ 2 ]

4 голосов
/ 25 июля 2011

У вас есть синтаксическая ошибка:

заменить

if (itemA < itemB);

на

if (itemA < itemB)

Хорошо, не синтаксическая ошибка, а лишняя точка с запятой.

0 голосов
/ 25 июля 2011

поиск .reverse () для массивов в js. Не то, что это решает проблему, но может решить вашу потребность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...