我有一个Javascript对象的数组,我想交叉兼容排序的属性总是一个正整数与一个可选的单个字母在结束。我正在寻找至少工作在溶液中的Firefox 3和Internet Explorer 8,我得出这样一个排序功能最接近的是以下几点:在IE8中的Javascript:如何按字母数字属性排序对象的数组
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,FOO,大
1010,FOO,小
15,FOO,小
1A,酒吧,大
1B,栏中,小
1C,酒吧,小
1D,杆,大
1E,酒吧,大
1F,酒吧,大
1G,FOO,小
2,FOO,小
23,FOO,小
23C,FOO,小
3,FOO ,小
不过,我想arrayOfObjects按以下顺序打印出:
1,富,大
1A,酒吧,大
1B ,棒,小
1C,酒吧,小
1D,酒吧,大
1E,酒吧,大
1F,酒吧,大
1G,FOO,小
2,FOO,小
3, FOO,小
15,FOO,小
23,FOO,小
23C,FOO,小
1010,FOO,小
鉴于这种情况,我该如何解决的AB ove函数,使对象按数字排序为主键,字母排序为辅助键?预先感谢您的帮助。
正则表达式字面不会将任何成本添加到每个迭代。你最好摆脱外部自我执行功能并在内部函数中声明splitter。 – 2010-09-28 23:51:36
除此之外,很好的答案。它比我准备提供的答案要简洁得多:) – 2010-09-28 23:52:23
我有一件关于重复正则表达式的事情 - 它不是关于性能,而是关于维护。也许一次尝试百次,我会在第一时间得到正确的正则表达式,所以我想尽量减少重复次数。当然,我可以在函数体中将它作为'var'键入;我没有多想这件事。 – Pointy 2010-09-28 23:55:22