Более подходящим набором для этой работы может быть Set
.В большинстве случаев разница в производительности сама по себе не должна беспокоить, но эта коллекция, как правило, будет реализована в виде хеш-таблицы и, следовательно, более производительна для больших наборов (конечно, при условии, что она не инициализируется в каждой итерации).
Тем не менее, это семантически правильный набор для хранения уникальных значений и более четко демонстрирует ваши намерения. ИМХО.
Использование довольно просто:
const match = new Set(['xxx', 'yyy', 'xx', 'yy']);
// O(1) time complexity, most likely
if (match.has('yy')) {
// do stuff
}
Если вы не хотитечтобы использовать Set
или поддерживать старые браузеры без использования полифилла, вы можете использовать простой объект js, чтобы получить те же преимущества по производительности хэширования:
function init(a) {
var result = {};
for (var i = 0, length = a.length; i < length; i++) {
result[a[i]] = true;
}
return result;
}
var match = init(['xxx', 'yyy', 'xx', 'yy']);
if (match.hasOwnProperty('yy')) {
// do stuff
}