Javascript - Opera 11.60和IE 8上的排序功能问题

got*_*tqn 0 javascript sorting opera internet-explorer

我试图通过属性对对象进行排序.我的功能在Opera和IE上有问题.直到现在,我已经在这个阶段调试了Opera的问题:

  1. 打开"Opera浏览器"并按cntr + shift + i.选择控制台.
  2. 在控制台中传递此代码,然后按shift + enter.

    var DataArray=["Other","Attitude","Attitude","Delivery/timings","General   Performance","Personal Planning","Other"]
    DataArray=DataArray.sort(function(a,b)
    {
        return a<b;
     });
    
    JSON.stringify(DataArray);
    
    Run Code Online (Sandbox Code Playgroud)

你应该得到这样的正确结果:

["个人计划","其他","其他","一般表现","交付/时间","态度","态度"]

  1. 现在以这种方式改变排序函数a> b,然后按Enter + shift来执行它.

    var DataArray=["Other","Attitude","Attitude","Delivery/timings","General   Performance","Personal Planning","Other"]
    DataArray=DataArray.sort(function(a,b)
    {
        return a>b;
    });
    JSON.stringify(DataArray);
    
    Run Code Online (Sandbox Code Playgroud)

我的结果是:

["态度","交付/时间","态度","一般表现","其他","其他","个人计划"]

注意第一个,第二个和第三个值?发生了什么?

如果你在控制台"Attitude"="Attitude"中执行它,它返回true ...

有任何想法吗?

提前致谢.

编辑:与IE的部分:

码:

 var DataArray=['Other','Attitude','Attitude','Delivery/timings','General    Performance','Personal Planning','Other'];

 DataArray=DataArray.sort(function(a,b)
{
     return a<b;
 });

prompt('',DataArray);
Run Code Online (Sandbox Code Playgroud)

结果(正确):个人计划,其他,其他,一般表现,态度,态度,交付/时间

码:

var DataArray = ['其他','态度','态度','交付/时间','一般表现','个人计划','其他'];

    DataArray=DataArray.sort(function(a,b)
    {
        return a>b;
    });

    prompt('',DataArray);
Run Code Online (Sandbox Code Playgroud)

结果(不正确):态度,态度,其他,交付/时间,一般表现,其他,个人计划

解:

sortableArray=sortableArray.sort(function(a,b)
                {
                    if(a.Category>b.Category)
                    {
                        return 1;
                    }

                    if(a.Category<b.Category)
                    {
                        return -1;
                    }

                    return 0;

                });
Run Code Online (Sandbox Code Playgroud)

要按降序排序,数据使用reverse()函数.

感谢您的帮助.特别是@nnnnnn

nnn*_*nnn 5

这对任何特定浏览器都不是问题,没有阅读.sort()功能文档是一个问题.你传递给的回调.sort()不应该返回一个布尔值,它应该返回一个数字:

  • 如果a出现在b之前则为负数
  • 如果a等于b,则为0
  • 如果a来自b,则为正数