我有工作正常排序功能,但后来我试图触发位添加到它(排序递增/递减),并打破了东西,我不能弄明白。在下面的代码中,sortArray是一个对象数组,sortBy是要排序的对象中的哪个项目,sortDir是asc或desc。因此,举例来说,如果用户希望通过设计师进行排序,然后意达和itemB将a.designer和b.designer或我使用它[sortBy] B [sortBy。如果我console.log itemA一旦他们被设置,他们看起来很好,他们正是我所期待的。JavaScript对象排序不工作
然而,当如果我插上这个代码:
if (itemA < itemB); //sort string ascending
console.log("a<b");
return -1;
if (itemA > itemB);
console.log("a>b");
return 1;
所有我得到的是在JS数组a < b
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
好的! Stoopid语法错误...:D – PruitIgoe