简单谈谈JS数组中的indexOf方法


Posted in Javascript onOctober 13, 2016

前言

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

String 类型的使用

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

let str = 'orange';

str.indexOf('o'); //0
str.indexOf('n'); //3
str.indexOf('c'); //-1

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

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

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

let numStr = '2016';

numStr.indexOf('2'); //0
numStr.indexOf(2); //0

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

Number 类型的使用

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

let num = 2016;

num.indexOf(2); //Uncaught TypeError: num.indexOf is not a function

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

//二逼青年的写法
num = '2016';
num.indexOf(2); //0

//普通青年的写法
num.toString().indexOf(2); //0

//文艺青年的写法
('' + num).indexOf(2); //0

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

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

Array 类型的使用

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

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

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

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。

     indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).

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

总结

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

Javascript 相关文章推荐
对table和ul实现js分页示例分享
Feb 24 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
JavaScript数据类型详解
Apr 01 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
Vue声明式渲染详解
May 17 Javascript
纯js实现页面返回顶部的动画(超简单)
Aug 10 Javascript
在vue-cli中引入lodash.js并使用详解
Nov 13 Javascript
Vue列表循环从指定下标开始的多种解决方案
Apr 08 Javascript
JS eval代码快速解密实例解析
Apr 23 Javascript
使用jquery如何获取时间
Oct 13 #Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 #Javascript
微信js-sdk分享功能接口常用逻辑封装示例
Oct 13 #Javascript
js给table赋值的实例代码
Oct 13 #Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 #Javascript
jquery获取点击控件的绝对位置简单实例
Oct 13 #Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 #Javascript
You might like
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python 类的继承实例详解
2017/03/25 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
django foreignkey(外键)的实现
2019/07/29 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
ktv收银员岗位职责
2013/12/16 职场文书
节能减排倡议书
2014/04/15 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
如何写早恋检讨书
2014/09/10 职场文书
长城导游词
2015/01/30 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书