У меня есть массив 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, foo, big
1010, foo, small
15, foo, small
1A, bar, big
1B, bar, small
1C, бар, маленький
1D, бар, большой
1E, бар, большой
1F, бар, большой
1G, foo, маленький
2, foo, маленький
23, foosmall
23C, foo, small
3, foo, small
Однако я бы хотел, чтобы arrayOfObjects печатал в следующем порядке:
1, foo, big
1A, бар, большой
1B, бар, маленький
1C, бар, маленький
1D, бар, большой
1E, бар, большой
1F, бар, большой
1G, foo, маленький
2, foo, маленький
3, foo, маленький
15, foo, маленький
23, foo, маленький
23C, foo, маленький
1010,foo, small
Учитывая это, как я могу исправить вышеуказанную функцию, чтобы объекты сортировались по номеру в качестве первичного ключаа письмо как вторичный ключ?Заранее спасибо за любую помощь.