一、语法及参数
1、.contains()方法可以判断一个字符串是否包含另一个字符串,并返回true或false。
const str = "Hello World";
console.log(str.contains("Hello")); //true
console.log(str.contains("hello")); //false
2、.contains()方法接收两个可选参数:startIndex和endIndex。startIndex表示搜索起始位置,默认为0;endIndex表示搜索结束位置,默认为原字符串长度。
const str = "Hello World";
console.log(str.contains("World", 6)); //true,从索引6开始搜索
二、区分大小写
.contains()方法是区分大小写的,即大小写不同的字符被视为不同的字符。因此,需要使用.toLowerCase()或.toUpperCase()方法来把字符串转换为同一大小写。
const str = "Hello World";
console.log(str.contains("WORLD")); //false
console.log(str.toLowerCase().contains("world")); //true
三、支持正则表达式
除了接收字符串参数外,.contains()方法还支持传递正则表达式作为参数。
const str = "Hello World";
console.log(str.contains(/d/)); //false
console.log(str.contains(/[A-Z]/)); //true
四、执行效率
相较于indexOf()方法,.contains()方法执行速度更快。因为.indexOf()方法需要遍历整个字符串进行比较,而.contains()方法仅需遍历到第一个匹配的字符位置便可返回结果。
const longStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel felis eget nunc pulvinar hendrerit.";
console.time("indexOf");
console.log(longStr.indexOf("nunc") !== -1); //true
console.timeEnd("indexOf"); //花费时间: 0.062ms
console.time("includes");
console.log(longStr.includes("nunc")); //true
console.timeEnd("includes"); //花费时间: 0.006ms
五、应用场景
1、筛选数组
const arr = ["apple", "banana", "orange", "watermelon"];
const keyword = "app";
const result = arr.filter(item => item.toLowerCase().contains(keyword.toLowerCase()));
console.log(result); //["apple"]
2、实现输入框自动完成
const inputBox = document.querySelector("#input-box");
const dataList = ["apple", "banana", "orange", "watermelon"];
inputBox.addEventListener("input", e => {
const keyword = e.target.value;
const suggestionList = dataList.filter(item => item.toLowerCase().contains(keyword.toLowerCase()));
//实现自动完成逻辑
})
3、校验字符串格式
function checkEmailFormat(email) {
return email.contains("@") && email.contains(".");
}
六、总结
可以看出,.contains()方法在我们日常开发中具有非常实用的功能。它不仅仅可以判断一个字符串是否包含另一个字符串,还可以支持区分大小写、接收正则表达式参数等。此外,由于它执行速度更快,相比其他字符串查找方法,.contains()方法更适合在大数据量下使用。