javascript - 如何在javascript集中执行不区分大小写的查找?
问题描述
如何在 javascript 中执行不区分大小写的查找set
?
我有一种情况,我有一组允许的字符串,但不能确定它们会是什么情况。我需要针对该集合验证用户输入。我怎样才能做到这一点?
const countries = new Set();
countries.add("USA");
countries.add("japan");
// returns false, but is there any way I could get
//`my set to ignore case and return true?`
console.log(countries.has("usa"));
console.log(countries.has("USA"));
解决方案
.toLowerCase
在添加之前或执行.has
检查之前总是调用字符串。当然,您也可以将其抽象为一个类(如果确实有必要的话):
class CaseInsensitiveSet extends Set {
constructor(values) {
super(Array.from(values, it => it.toLowerCase()));
}
add(str) {
return super.add(str.toLowerCase());
}
has(str) {
return super.has(str.toLowerCase());
}
delete(str) {
return super.delete(str.toLowerCase());
}
}
const countries = new CaseInsensitiveSet([
"Usa",
]);
console.log(countries.has("usa")); // true
推荐阅读
- javascript - 错误:使用 Parcel 运行 Cypress 时找不到绑定文件
- java - 如何确定 2 个 .jar 文件是否是“相同”的版本?
- html - 负责任的工具提示/引导程序 4
- javascript - 为什么这些 javascript 对象是相等的?
- javascript - 如何处理动态链接网址?
- node.js - 面临在实时服务器上上传构建的问题
- amazon-web-services - 来自 Spark 的 S3 写入间歇性失败,错误代码为 404 NoSuchKey
- sql - 我如何在我的 PostgreSQL 数据库中调用另一个过程
- dependency-injection - @BindsInstance 上的 @Singleton
- amazon-web-services - 未知动态 url 路径上的 AWS 应用程序负载均衡器