考虑以下数组:
['a', 'b', 'a'] //method should return true
['a', 'b', 'c'] //method should return true
['a', 'c', 'c'] //method should return false
我想编写一种最有效地检查数组中是否同时存在“ a”和“ b”的方法。我知道我可以在一个简单的for循环中做到这一点
let a_counter = 0;
let b_counter = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] === 'a') {
a_counter++;
}
if (array[i] === 'b') {
b_counter++;
}
}
return (a_counter > 0 && b_counter > 0);
但这不是很短。我可以,indexOf但是会循环两次。我还考虑过使用如下设置:
const letter_set = new Set(array)
return (letter_set.has('a') && letter_set.has('b'))
但是我对集合非常陌生,不知道这种解决方案是否可能比循环更昂贵。我知道has()操作应该比数组迭代更快,但是构造集合可能至少需要O(N)时间(我假设)。
有没有一种干净有效的方法来查找数组中的多个元素?ES6解答欢迎
米脂
DIEA
慕少森
相关分类