JS中的indexOf方法

JS中的indexOf方法indexOf()简介indexOf是js中内置的方法之一,它能

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

indexOf()简介

indexOf()是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。
如果查询到返回索引,反之返回-1(固定用法);
因为indexOf()在不同类型使用的时候可能有细节性的注意点;
这里我们对不同数据类型使用IndexOf的场景进行讨论(其实就是string和array)
注:(暂不讨论两个参数时(第二个参数为查询的起始位置),以及lastIndexOf()

String类型使用indexOf();
String中的indexOf方法
(话不多说直接上代码,不跟你多BB)

var s = '12345';
        console.log(s.indexOf(1));   //0 
        console.log(s.indexOf('1')); //0
        console.log('----------------------------');

相信大家已经发现特点,也就是string的IndexOf()是对数据进行了隐式类型转换的,如果参数是数值它会转换为字符来进行查询然后返回索引,本质原因是什么呢,那就是 我们js底层代码中String.prototype.indexOf()使用的是==进行比较判断;
Number类型的IndexOf()
醒醒,Number类型哪来的indexOf()方法,会直接报错的好吗,
如果想对数值类型的进行查询索引,可以将数值转换为字符再进行查询,方法有很多:
– String()
– .toString()
– 与空字符’’进行+拼接

Array类型的indexOf()

var a = [1,2,3,'4','5','6'];
        console.log(a.indexOf(3));  //2
        console.log(a.indexOf('4')); //3
        console.log(a.indexOf(4));  //-1 

可以看到arrayindexOf()是不会进行隐式类型转换的,也就是说Array.prototype.indexOf()底层代码在实现的时候使用的是强等于=== 严格比较;

总结

  • string中indexOf() 会将数值参数转换为字符再查询索引;
  • number类型没有IndexOf() 可以转换为字符再使用
  • array中indexOf() 是严格比较
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158304.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为eclipse安装gae插件遇到的一点小问题。

    为eclipse安装gae插件遇到的一点小问题。

    2021年8月28日
    56
  • VIM编辑器和VI编辑器的区别

    VIM编辑器和VI编辑器的区别

    2021年6月15日
    134
  • 详解如何在vue项目中使用layui框架及采坑

    详解如何在vue项目中使用layui框架及采坑根据官网的文档,要在一个html文件下使用layui里面的组件库其实很简单,但是在vue项目中使用该ui库却存在着很多坑,下面我们就详细讲解一下如何在vue-cli搭建的项目下使用layui1.第一个坑:vue项目中使用npm安装引入时报错(目前并没有找到引入的合适的方式,知道的可以留言探讨)在官网中我们可以看到他提到支持npm安装,但是当我们安装成功后,在main.js中引入时却报并不能…

    2022年6月25日
    92
  • mybatis-plus 在线激活码_在线激活

    (mybatis-plus 在线激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    244
  • oracle创建sequence语法_oracle sequence使用

    oracle创建sequence语法_oracle sequence使用先假设有这么一个表:createtableS_Depart(DepartIdINTnotnull,DepartNameNVARCHAR2(40)notnull,DepartOrderINTdefault0,constraintPK_S_DEPARTprimarykey(DepartId));

    2022年8月31日
    3
  • vue $attrs的使用

    vue $attrs的使用$attrs的使用vue$attrs是在vue的2.40版本以上添加的。项目中有多层组件传参可以使用$attrs,可以使代码更加美观,更加简洁,维护代码的时候更方便。如果使用普通的父子组件传参prop和$emit,$on会很繁琐;如果使用vuex会大材小用,只是在这几个组件中使用,没必要使用vuex;使用事件总线eventBus,使用不恰当的话,有可能会出现事件多次执行。如果给组件传递…

    2022年10月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号