Есть массив объектов:
messages = [
{"id":1, "language":"ar"},
{"id":2, "language":"en"},
{"id":3, "language":"su"},
{"id":4, "language":"mo"},
{"id":5, "language":"da"}
];
И есть массив языков, например, он может быть таким:
sortableLanguages = ["su", "ar"];
В итоге должно отсортироваться так:
messages = [
{"id":3, "language":"su"},
{"id":1, "language":"ar"},
{"id":2, "language":"en"},
{"id":4, "language":"mo"},
{"id":5, "language":"da"}
];
Т.е., сначала сортируется по массиву
sortableLanguages, а потом остальные as is.
Дошел до такого кода:
messages.sort((a, b) => {
if (sortableLanguages.indexOf(a.language) === -1) return -1;
return sortableLanguages.indexOf(a.language) < sortableLanguages.indexOf(b.language) ? 1 : 0;
});
Но почему-то получается всё наоборот.