У меня есть массив, который структурирован следующим образом:
[{ name: "Aardvark", count: 9 },
{ name: "Apple", count: 12 },
{ name: "Banana", count: 4 },
{ name: "Carrot", count: 6 }]
Я хотел бы отобразить содержимое массива для пользователя (отображение каждого элемента в div), отсортировать по количеству, а затем в алфавитном порядке, так что вышеуказанный массив должен всегда поддерживать следующий отсортированный порядок и отображаться так:
[{ name: "Apple", count: 12 },
{ name: "Aardvark", count: 9 },
{ name: "Carrot", count: 6 },
{ name: "Banana", count: 4 }]
Итак, это достаточно просто. Просто сортируйте вызов что-то вроде:
arr.sort((a, b) => b.count - a.count || a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
Проблема в том, что мне также нужна возможность определить, находится ли данная строка в коллекции. Например, мне нужно проверить, существует ли в коллекции Carrot
.
Обычно я бы использовал какую-то функцию фильтра массива, но массивы очень большие (много десятков тысяч элементов), и наивное решение слишком медленное. Кроме того, существует несколько таких типов коллекций, и, если это возможно, я бы хотел избежать необходимости поддерживать несколько коллекций, которые мне пришлось бы вручную синхронизировать c друг с другом.
Есть ли способ элегантно решить это?