我有一个JSON对象
var x=[{@Name:'test 1',@Sort:'1',@Status:'yes'},
{@Name:'test 2',@Sort:'5',@Status:'yes'},
{@Name:'test 3',@Sort:'4',@Status:'no'},
{@Name:'test 5',@Sort:'2',@Status:'no'}]我正在尝试按@Sort、@Name和@Status对obj进行排序。
var orderBy="@Sort";
x.sort(_sortObj(orderBy));
function _sortObj(orderBy){
return function(a,b){
return (a[orderBy]<b[orderBy])?1:0....etc
}
}它在Firefox和Chrome上运行良好...
但在IE 7/8中行抛出错误为"number expected“
x.sort(_sortObj(orderBy));我不确定发生了什么,如果有人能正确地解决这个问题,那就太好了。
发布于 2012-04-12 22:36:19
我用下面的排序插件解决了这个问题,
http://www.thomasfrank.se/downloadableJS/objSort.js
谢谢你们帮我的忙
发布于 2012-03-27 00:04:25
这不是JSON对象。属性名称和值必须用“双引号”括起来。
这可能是旧版IE出错的原因,它不能识别存在的@。
发布于 2012-03-27 02:02:08
除了Kolink的答案之外,IE可能不会强制将string-y数字转换为用于<比较的实际数字对象。您可以自己执行强制,方法是乘以1:
return (a[orderBy]*1 < b[orderBy]*1) ? 1 : 0;https://stackoverflow.com/questions/9875565
复制相似问题