本文介绍了为什么不能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的排序对象的数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!