为什么ExtJS分类器函数必须返回-1/0/1

8mmmxcuj  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(103)

sorterFn的返回值被限制为-1/0/1。我还在源代码的注解中发现了这种期望。
为什么不直接返回any negative number/0/any positive number呢?
我不是在问为什么有一个比较器可以方便地返回-1/0/1是好的。
我想问的是,为什么框架的作者决定限制我们使用-1/0/1,而JS本身在其比较器回调中允许any negative number/0/any positive number

cxfofazt

cxfofazt1#

基本上,您可以使用任何数字,只要它们有顺序,如-1/0/1或-12/0/200。
下面是一个示例:

sorters: [{
                sorterFn: function(person1, person2) {
                    let lhs = person1.data.name,
                        rhs = person2.data.name;

                    return (lhs > rhs) ? 200 : (lhs === rhs ? 0 : -12);
                }
            }],

这是小提琴,它显示了小提琴
!!!首先,你可能要考虑一下PeterKoltai和aaandri 98的评论!!!
此外,为了保持代码对每个人(现在和将来)都可读,您可能希望使用静态数字,即-1/0/1。
而规则是:因为Ext.Array.binarySearch内部的部分,所以一个必须为负,一个为正

if (comparison >= 0) {
    begin = middle + 1;
} else if (comparison < 0) {
    end = middle - 1;
}

相关问题