一、语法及参数

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()方法更适合在大数据量下使用。