意外行为,自定义.sort()始终返回0

时间:2017-07-31 17:21:50

标签: javascript arrays sorting

.sort(function(a,b){return 0;})

如果我写一个总是返回0的自定义排序函数,为什么它会扰乱数组的元素而不是让它们保持不变?

[0,1,2,3,4,5,6,7,8,9,10,11,12].sort(function(a,b){return 0;});

会给你:

[6, 0, 2, 3, 4, 5, 1, 7, 8, 9, 10, 11, 12]

我认为.sort()总是返回0会使数组保持不变。

如何在数组上应用.sort()并获得未更改的数组?

奇怪的是,如果你在一个少于10个项目的数组上进行,则数组顺序不变。

我遇到了这个排序xy点,2个单独的.sort()调用,一个用于x,然后是y。在所有ys与水平线共线的情况下,它对我已经排序的x值进行解扰。

        .sort(function(a,b){
            if(a.x-b.x<-EPSILON_HIGH){return -1;}
            if(a.x-b.x>EPSILON_HIGH){return 1;}
            return 0;})
        .sort(function(a,b){
            if(a.y-b.y<-EPSILON_HIGH){return -1;}
            if(a.y-b.y>EPSILON_HIGH){return 1;}
            return 0;})
        ;

0 个答案:

没有答案