Javascript对象排序不工作

javascript object sorting not working

本文关键字:工作 排序 对象 Javascript      更新时间:2023-09-26

我有一个排序函数,它工作得很好,但后来我试图添加一个toggle位(排序asc/desc)和一些东西打破了,我不能弄清楚。在下面的代码中,sortArray是一个对象数组,sortBy是对象中要排序的项,sortDir是asc或desc。因此,例如,如果用户想按设计人员排序,那么itemA和itemB将是a.designer和b.designer,或者我使用它是a[sortBy] b[sortBy]。如果我设置了console. logitema,它们看起来很好,它们正是我所期望的。

但是,如果我插入这段代码:

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;
    }

语法错误:

代替

if (itemA < itemB);

if (itemA < itemB)

不是语法错误,而是多了一个分号。

查找.reverse()在js中的数组。这并不能解决问题,但它可以满足您的需求。