【发布时间】:2014-09-24 18:22:02
【问题描述】:
我有一个 Javascript 对象数组,我想通过一个属性进行交叉兼容排序,该属性始终是一个正整数,末尾有一个可选的单个字母。我正在寻找一种至少适用于 Firefox 3 和 Internet Explorer 8 的解决方案。我最接近这种排序功能的方法如下:
var arrayOfObjects = [{id: '1A', name: 'bar', size: 'big'}, {id: '1C', name: 'bar', size: 'small'}, {id: '1', name: 'foo', size: 'big'}, {id: '1F', name: 'bar', size: 'big'}, {id: '1E', name: 'bar', size: 'big'}, {id: '1B', name: 'bar', size: 'small'}, {id: '1D', name: 'bar', size: 'big'}, {id: '1G', name: 'foo', size: 'small'}, {id: '3', name: 'foo', size: 'small'}, {id: '23', name: 'foo', size: 'small'}, {id: '2', name: 'foo', size: 'small'}, {id: '1010', name: 'foo', size: 'small'}, {id: '23C', name: 'foo', size: 'small'}, {id: '15', name: 'foo', size: 'small'}]
arrayOfObjects.sort(function(a, b){
return (a.id < b.id ? -1 : a.id == b.id ? 0 : 1);
});
这样排序后,打印出arrayOfObjects给出:
1,富,大
1010,富,小
15、富、小
1A,吧台,大
1B,酒吧,小
1C,酒吧,小
一维,酒吧,大
1E,酒吧,大
1F,酒吧,大
1G,富,小
2、富、小
23、富、小
23C, foo, 小
3、foo、小
但是,我希望 arrayOfObjects 按以下顺序打印出来:
1,富,大
1A,吧台,大
1B,酒吧,小
1C,酒吧,小
一维,酒吧,大
1E,酒吧,大
1F,酒吧,大
1G,富,小
2、富、小
3、富、小
15、富、小
23、富、小
23C, foo, 小
1010, foo, 小
鉴于此,我怎样才能修复上述功能,以便对象按数字作为主键和字母作为辅助键排序?提前感谢您的帮助。
【问题讨论】:
标签: javascript sorting