Javascript中indexOf的用法和分析

Javascript中indexOf的用法和分析前言相信说到 indexOf 大家并不陌生 判断字符串是否包涵子字符串时特别常用 正则不熟练同学的利器 这篇文章就最近遇到的一个问题 用实例再说说说 indexOf 方法 本文是小知识点积累 不作为深入讨论的话题 因此这里没有解释 indexOf 的第二个参数 相信大家都知道第二个参数的作用 String 类型的使用温习一下大家熟知的字符串用法 举个 12345letstr orange nbsp

前言

相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用,正则不熟练同学的利器。这篇文章就最近遇到的一个问题,用实例再说说说indexOf方法。本文是小知识点积累,不作为深入讨论的话题,因此这里没有解释indexOf()的第二个参数,相信大家都知道第二个参数的作用。

String 类型的使用

温习一下大家熟知的字符串用法,举个

?
1
2
3
4
5
let str =
'orange'
;
 
str.indexOf(
'o'
);
//0
str.indexOf(
'n'
);
//3
str.indexOf(
'c'
);
//-1

这里 0 和 3 分别是 o 和 n 在字符串中出现的位置。起始下标是 0。而 -1 代表未匹配。

曾经有人问我为什么偏偏是 -1 不是 null 或者 undefined。你去问制定规则的人啊!一脸无奈。

大家看到这里感觉没什么亮点啊,别急接着再来一个例子

?
1
2
3
4
let numStr =
'2016'
;
 
numStr.indexOf(
'2'
);
//0
numStr.indexOf(2);
//0

看到这里有个小点就是 indexOf 会做简单的类型转换,把数字转换成字符串 ‘2’ 然后再执行。

Number 类型的使用

大家可能会想 number 类型有没有 indexOf 方法因为会做隐式转换嘛!明确告诉大家没有,上例子

?
1
2
3
let num = 2016;
 
num.indexOf(2);
//Uncaught TypeError: num.indexOf is not a function

非要对 number 类型使用 indexOf 方法嘞?那就转换成字符串咯,接着上例来写

?
1
2
3
4
5
6
7
8
9
//二逼青年的写法
num =
'2016'
;
num.indexOf(2);
//0
 
//普通青年的写法
num.toString().indexOf(2);
//0
 
//文艺青年的写法
(
''
+ num).indexOf(2);
//0

第一种写法简单直接,对于已知的较短的数字也不是不可行。但是 num 变量针对不同数据是变化的时候,怎么办呢?❌

第二种写法最为常用,但对比第三种写法长了一点。哈哈,其实都可以,代码洁癖的人喜欢第三种 ✅

Array 类型的使用

大家提起精神,大boss来了。

数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉)。

干说不练瞎扯淡,遇到了什么问题,注意⚠️点又在哪里?

?
1
2
3
4
5
6
7
let arr = [
'orange'
,
'2016'
,
'2016'
];
 
arr.indexOf(
'orange'
);
//0
arr.indexOf(
'o'
);
//-1
 
arr.indexOf(
'2016'
);
//1
arr.indexOf(2016);
//-1

这里没把例子拆的那么细,四个用例足以说明问题。

    arr.indexOf(‘orange') 输出 0 因为 ‘orange’ 是数组的第 0 个元素,匹配到并返回下标。

    arr.indexOf(‘o') 输出 -1 因为此方法不会在每一个元素的基础上再次执行 indexOf 匹配。

    arr.indexOf(‘2016') 输出 1 因为此方法从头匹配直到匹配到时返回第一个数组元素的下表,而不是返回全部匹配的下标。

    arr.indexOf(2016) 输出 -1 注意:这里不会做隐式类型转换。

既然坑已经发现我们不妨刨根问底。去MDN官网一看究竟。对此话题感兴趣的朋友可以直接跳转到Array.prototype.indexOf()

只想了解的朋友下面给大家官方的 Description。

一目了然,这里用的是严格等于(===)。大家做类似判断的时候多留意。不要误认为数字会转成字符串,同理字符串也不会转换成数字。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:

  • javascript创建含数字字母的随机字符串方法总结
  • JavaScript的字符串方法汇总
  • JS常用字符串方法(推荐)
  • javascript数组去重方法分析
  • 详解JavaScript中数组的reduce方法
  • 分享JS数组求和与求最大值的方法
  • js接收并转化Java中的数组对象的方法
  • js删除Array数组中指定元素的两种方法
  • js删除数组元素、清空数组的简单方法(必看)
  • js数组与字符串常用方法总结


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • C++操作单链表ListNode「建议收藏」

    C++操作单链表ListNode通过C++进行单链表的创建、打印以及利用栈实现逆序打印。单链表的创建和打印#include<iostream>usingnamespacestd;//定义结构体structListNode{ intval; ListNode*next;};classoperateList{public: /*创建单链表*/ …

    2022年4月7日
    42
  • Android中联系人使用

    我8月份的时候接触过联系人这里,看了很多文章,把我弄蒙了,今天突然发现这篇文章,不错,如果我以后涉及到这方面的业务,会多来学习下,作者博客地址和英文原文地址都放在最下面了。前阵子搞短信,发现Android1.x至2.0版本联系人数据库很多地方做了更改,且关于这方面的资料也比较少,所以找到一篇文章稍作翻译了下,以供大家参考,该文将分三部分发布。WorkingWithAndro

    2022年4月8日
    40
  • utf8转换成ansi编码_ansi乱码

    utf8转换成ansi编码_ansi乱码1、windows平台下#ifdef_WIN32intCParserIni::ansi2utf8(conststring&ansiStr,string&utf8Str){intret=kNoError;do{//CP_ACP(ANSI字符集)if(ansiStr.empty())BREAK_WITH_ERROR(kInvalidParamete…

    2025年11月30日
    6
  • windows server 2008 r2 DNS服务器配置图文教程「建议收藏」

    windows server 2008 r2 DNS服务器配置图文教程「建议收藏」DNS服务器  DNS服务器用来负责将ip地址和域名进行互相解析。  DNS服务器的作用      简单来说,DNS服务器的作用就是帮助用户使用简单好记的域名来访问网络上的主机和网络服务。  DNS服务器中的记录类型 A地址:用于为特定域名制定对应的IP地址。CNAME:用于为特定域名指定对应的的别名,用户可以通过别名访问这个域名,也可以为特定域名指定多个别名。MX:用于为…

    2022年6月3日
    43
  • order by case when执行优先级_sql case语句

    order by case when执行优先级_sql case语句MySQL语句中执行优先级——and比or高例:select*fromtablewhere条件1AND条件2OR条件3等价于select*fromtablewhere(条件1AND条件2)OR条件3select*fromtablewhere条件1AND条件2OR条件3AND条件4等价于select*fromtablewhere(条件1AND条件2)OR(条件3AND条件4)sql执行顺序

    2025年8月26日
    5
  • PHP在线客服系统平台源码(完全开源的网页在线客服系统)

    PHP在线客服系统平台源码(完全开源的网页在线客服系统)  在线客服系统是一个使用PHP、JavaScript和CSS开发的即时网页聊天咨询系统。该项目包含管理员和用户端。管理员端管理所有的管理,如编辑站点内容、管理提供者和预订,管理员在这个系统的管理中起着重要的作用。    在线客服系统源码及演示:zxkfym.top    对于用户部分,用户可以浏览主页、关于和服务。用户可以是顾客谁需要家庭服务或服务提供商提供家庭服务的人。为了注册为服务提供商,用户必须填写注册表格。然而,要将服务提供商作为客户预订,用户可以先搜索可用的服务提供商,然后再进行预订。该

    2022年7月19日
    70

发表回复

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

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