gpt4 book ai didi

javascript对象排序不起作用

转载 作者:行者123 更新时间:2023-11-30 10:48:43 24 4
gpt4 key购买 nike

我有一个排序功能,它工作正常,但后来我试图向它添加一个切换位(排序 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;

}

最佳答案

语法错误:

替换

if (itemA < itemB);

if (itemA < itemB)

好吧,不是真正的语法错误,而是一个额外的分号。

关于javascript对象排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6820061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com