我正在以这种方式过滤和排序项目:
items
.filter(// filter logic)
.sort((a, b) => {
if (shouldntSort) return
// sorting logic
},
我认为return
会停止sort
功能,但我错了。只删除整个.sort
方法会停止对项目进行符号排序。
如何在.sort?
答案 0 :(得分:3)
如果您致电sort
,您就会进行排序。没有合理的方法不去。
因此,如果您不想排序,请不要致电sort
:
items = items.filter(/*...*/);
if (!shouldntSort) {
items.sort();
}
我认为
return
会停止sort
功能
return
只退出排序回调。 sort
反复调用回调来询问两个项目应该如何相互关联(第一项应该在第二项之前还是之后)。没有"取消排序"从该回调返回值。
如果你需要一个可以作为同一个表达式的一部分的版本,你可以给自己一个maybeSort
函数:
Object.defineProperty(Array.prototype, "maybeSort", {
value: function(shouldSort, sortCallback) {
if (shouldSort) {
return sortCallback ? this.sort(sortCallback) : this.sort();
}
return this;
}
});
然后
items = items
.filter(/*...*/)
.maybeSort(!shouldntSort);