Попробуйте следующее:
objects.sort(function(a, b){
return order.indexOf(a.id) - order.indexOf(b.id)
});
Предполагая, что переменные похожи на то, как вы их объявили в вопросе, это должно возвратиться:
[
{ id: 'bbbb', description: 'bar' },
{ id: 'aaaa', description: 'foo' },
{ id: 'cccc', description: 'baz' }
];
(Фактически это изменяет objects
переменная) [/ д2]
Вам нужен способ перевести строку в позицию в массиве, т. е. индекс-функции для массива.
Существует один в новых браузерах, но для обратной совместимости вам нужно добавить его, если его там нет:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(str) {
var i;
for (i = 0; i < this.length; i++) if (this[i] == str) return i;
return -1;
}
}
Теперь вы можете отсортировать массив, повернув строку в индекс:
objects.sort(function(x,y){ return order.indexOf(x.id) - order.indexOf(y.id); });