是否可以使用 Javascript 中的 Set 搜索一系列值



我有一组由数组组成的字母,我想看看它们中是否有来自 [a-z] 的任何字符。

let letterArr = ['a','d','w','e','r','q','y', 'w'];
let mySet = new Set(letterArr);
console.log(mySet.has('a')); //true
console.log(mySet.has('q')); //true

我可以使用has()搜索一系列字符或数字吗?

No. Set甚至不允许自定义相等,它们也不进行自定义比较(如"大于a和小于z"(。

当然,您可以轻松地测试范围中的每个值是否在集合中,或者测试集合中的每个值是否在该范围内(以较快者为准(,但这不是很有效。如果需要对大范围和大集合执行此操作,那么您应该考虑基于搜索树的自己的 Set 实现,该搜索树可以搜索具有对数时间复杂度的范围。

我会这样做而不是设置。

let letterArr = ['a','d','w','e','r','q','y', 'w'];
let str = letterArr.join('');
// Just to make sure this function exists
String.prototype.contains = function(x){ 
   return this.indexOf(x)!=-1;
}
console.log(str.contains('a')); //true
console.log(str.contains('q')); //true
console.log(str.contains('z')); //false

function mySet(char){
    let letterArr = ['a','d','w','e','r','q','y','w'].join(''),
        check = new RegExp('['+char+']','gi')
    return check.test(letterArr)
}
console.log(mySet("a")) // true
console.log(mySet("x")) // false

最新更新