Вы можете взять Map
и получить карту объектов в нужном порядке.
var objects = [
{ id: 'doe', descr: 'a deer' },
{ id: 'baz', descr: 'non-sense' },
{ id: 'ray', descr: 'a drop' },
{ id: 'foo', descr: 'effed' },
{ id: 'bar', descr: 'beyond' }
],
objectsOrder = ['foo', 'bar', 'baz'],
result = objectsOrder.map(Map.prototype.get, new Map(objects.map(o => [o.id, o])));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Если некоторые id
неизвестны, вы можете добавить фильтр для правдивых предметов.
var objects = [
{ id: 'doe', descr: 'a deer' },
{ id: 'baz', descr: 'non-sense' },
{ id: 'ray', descr: 'a drop' },
{ id: 'foo', descr: 'effed' },
{ id: 'bar', descr: 'beyond' }
],
objectsOrder = ['foo', 'bar', 'unknown'],
result = objectsOrder
.map(Map.prototype.get, new Map(objects.map(o => [o.id, o])))
.filter(Boolean);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }