zoukankan      html  css  js  c++  java
  • 【20190407】JavaScript-indexOf方法解析

    在JavaScript中,字符串类型String和数组类型Array都有indexOf()方法,虽然他们的作用都是返回传入元素在指定字符串或数组中的位置,但他们之间还是存在着一点点不同。

    Str.indexOf(searchValue[, fromIndex])

    字符串调用indexOf方法,返回searchValue在原字符串中第一次出现的位置,可以使用lastIndexOf方法查找searchValue最后一次出现的位置,如果没有找到则返回-1。

    它与数组的indexOf方法不同的是,它比较元素时会存在类型转换。

    console.log('12345'.indexOf(3)); //2
    console.log('12345'.indexOf([3])); //2
    console.log('12345'.indexOf(new Object(3))); //2

    这里传入的实际上分别是数值类型、数组类型、对象,但是它还是返回了这个元素在字符串中的位置。

    console.log('12345'.indexOf(45)); //3
    console.log('12345'.indexOf([45])); //3
    console.log('12345'.indexOf(new Object(45))); //3

    从以上例子可以看到实际上这个函数把传入的元素转换为了字符串,然后按照匹配子字符串的方式找到它在原字符串中的位置。

    另外indexOf方法对大小写敏感。

    str.search(RegExp)

    顺便再提一下search方法,search方法用于检索字符串中指定的子字符串,检索与正则表达式相匹配的子字符串。如果没有找到,返回-1。

    search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 str 的第一个匹配的位置。它同样对大小写敏感,如果要忽略大小写则在RegExp中添加标志i。

    Arr.indexOf(searchValue[, fromIndex])

    同样返回的是searchValue在Arr中第一次出现的位置,但是数组的indexOf方法执行的是严格相等,也就是“===”,不会有类型转换。

    let arr=['apple','banana','12','apple'];
    console.log(arr.indexOf('apple')); //0
    console.log(arr.indexOf('apple',1)); //3
    console.log(arr.indexOf(12)); //-1
    console.log(arr.indexOf('app')); //-1
  • 相关阅读:
    JSP源码、改写Servlet为JSP、查看转译成为Servlet的文件、JSP字符编码设置
    使用Tomcat部署应用
    缓冲与缓存
    过滤器及请求封装器实现字符编码
    过滤器与请求封装器实现字符替换
    过滤器
    与请求相关的监听器
    区块链简介
    https协议简介
    http协议简介
  • 原文地址:https://www.cnblogs.com/huangrui-dori/p/10665736.html
Copyright © 2011-2022 走看看