为什么不能Safari 5的排序对象的数组? [英] Why won't Safari 5 sort an array of objects?

查看:149
本文介绍了为什么不能Safari 5的排序对象的数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁知道为什么Safari 5的(Windows 7)中无法对象的数组排序?

  VAR ARR = {[一:1},{A:3},{A:2}];
的console.log(改编[0] .A +','+常用3 [1] .A +','+常用3 [2] .a)中;
arr.sort(功能(A,B){返回A.A> b.a;});
的console.log(改编[0] .A +','+常用3 [1] .A +','+常用3 [2] .a)中;

控制台的结果应该是

  1,3,2
1,2,3

这工作正常在FF和IE浏览器,但Safari浏览器返回:

  1,3,2
1,3,2


解决方案

您比较函数是错误的:

 功能(A,B){返回A.A> b.a;}

该功能有望恢复负,零或正取决于是否< B,A = B或A> B。你的函数返回一个布尔值,表示是否A> B。尝试是这样的:

 功能(A,B){返回A.A  -  b.a;}

Anyone know why Safari 5 (Windows 7) can't sort arrays of objects?

var arr = [{a:1},{a:3},{a:2}];
console.log(arr[0].a+','+arr[1].a+','+arr[2].a);
arr.sort(function(a,b){return a.a > b.a;});
console.log(arr[0].a+','+arr[1].a+','+arr[2].a);

The console result should be

1,3,2
1,2,3

This works fine in FF and IE but Safari returns:

1,3,2
1,3,2

解决方案

Your comparison function is wrong:

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

The function is expected to return negative, zero or positive depending on whether a < b, a = b or a > b. Your function returns a boolean indicating whether a > b. Try something like:

function(a,b){return a.a - b.a;}

这篇关于为什么不能Safari 5的排序对象的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆