我有一组由数组制作的字母,我想知道它们中是否有来自[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()
搜索一系列字符或数字吗?
答案 0 :(得分:1)
没有。 Set
s don't even allow for custom equalities,他们不进行自定义比较(如“大于a
且小于z
”。
当然,您可以轻松地测试范围中的每个值,无论它是在集合中,还是集合中的每个值是否在范围内(以较快者为准),但这不是非常有效。如果您需要对大范围和大型集合执行此操作,那么您应该考虑基于search tree的自己的Set实现,可以搜索具有对数时间复杂度的范围。
答案 1 :(得分:1)
我会这样做,而不是设置。
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
答案 2 :(得分:0)
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