我有一组由数组组成的字母,我想看看它们中是否有来自 [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