我正在尝试按照alphbatical顺序对项目进行排序。但是,我也想对项目类型进行排序。
例如:
我想要
type sortValue
blockItem a test1
blockItem a test2
blockItem b test3
imageItem a image
imageItem b image
imageItem c image
imageItem s image
textItem a text
textItem b text
textItem c text
我的代码会做这样的事情。
type sortValue
blockItem a test1
blockItem a test2
imageItem a image
textItem a text
blockItem b test3
imageItem b image
textItem b text
imageItem c image
textItem c text
imageItem s image
我的排序功能
array contains type and sortvalue
array=array.sort(sortFunction);
function sortFunction(groupA, groupB) {
if (groupA.sortValue > groupB.sortValue) {
return 1;
} else if (groupA.sortValue < groupB.sortValue) {
return -1;
}
return 0;
}
它只对文本进行排序,但不对类型进行排序。我想知道是否还有这样做。非常感谢!
答案 0 :(得分:3)
使用第二个键来比较第一个是否相等:
function sortFunction(a, b) {
if (a.key1 > b.key1) {
return +1;
} else if (a.key1 < b.key1) {
return -1;
} else if (a.key2 > b.key2) {
return +1;
} else if (a.key2 < b.key2) {
return -1;
} else
...
} else if (a.keyN > b.keyN) {
return +1;
} else if (a.keyN < b.keyN) {
return -1;
} else {
return 0;
}
}
或者,为了更好的可读性:
function sortFunction(a, b) {
if (a.key1 > b.key1) {
return +1;
} else if (a.key1 < b.key1) {
return -1;
}
if (a.key2 > b.key2) {
return +1;
} else if (a.key2 < b.key2) {
return -1;
}
...
if (a.keyN > b.keyN) {
return +1;
} else if (a.keyN < b.keyN) {
return -1;
}
return 0;
}
答案 1 :(得分:2)
if (groupA.type == groupB.type) {
/* your code */
}
else if (groupA.type > groupB.type) {
return 1;
}
else if (groupA.type < groupB.type) {
return -1;
}
return 0;