[英]Javascript - Issue with sort function on Opera 11.60 and IE 8
我试图按那里的属性对对象进行排序。 我在Opera和IE上的功能存在问题。 到现在为止,我已经在此阶段调试了Opera上的问题:
在控制台中传递此代码,然后按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);
您应该获得如下正确的结果:
[“个人规划”,“其他”,“其他”,“总体表现”,“交付/时间”,“态度”,“态度”]
现在以这种方式更改排序功能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);
我的结果是:
[“态度”,“交付/时间”,“态度”,“一般表现”,“其他”,“其他”,“个人计划”]
注意第一个,第二个和第三个值吗?
如果在控制台“ 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);
结果(正确):个人计划,其他,其他,总体表现,态度,态度,交付/时间
码:
var DataArray = ['其他','态度','态度','交付/时间','总体表现','个人规划','其他'];
DataArray=DataArray.sort(function(a,b)
{
return a>b;
});
prompt('',DataArray);
结果(不正确):态度,态度,其他,交付/时间,总体表现,其他,个人计划
解:
sortableArray=sortableArray.sort(function(a,b)
{
if(a.Category>b.Category)
{
return 1;
}
if(a.Category<b.Category)
{
return -1;
}
return 0;
});
要对数据进行降序排序,请使用reverse()函数。
感谢您的帮助。 特别是@nnnnnn
这对于任何特定的浏览器而言都不是问题,而对于未阅读.sort()
函数文档的情况而言 ,则是一个问题。 您传递给.sort()
的回调不应该返回布尔值,而应该返回一个数字:
您的排序函数返回一个布尔值,而它应该返回一个整数。 虽然1
可以混淆为true
而0
可以混淆为false
,但这不应该是您依赖代码逻辑的东西。 该函数应具有3个返回情况:
< 0
如果a > b
> 0
如果a < b
a == b
== 0
所以你应该像这样对数组进行排序:
DataArray = DataArray.sort(function(a,b){
return a>b ? 1 : a<b ? -1 : 0;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.