资讯专栏INFORMATION COLUMN

浅谈lastIndexOf

罗志环 / 3064人阅读

摘要:今天误解了函数有必要在这里写出来帮助像我一样的新手。从数组的后面向前查找,从处开始。也就是说,一个元素对应一个索引,不会变的。那么对于同一个元素不管是从前往后还是从后往前查找,返回值应该是一样的。

今天误解了Array.prototype.lastIndexOf函数, 有必要在这里写出来, 帮助像我一样的新手。

下面这个返回几?

var n = [1, 2, 3, 4, 5, 3,1];
console.log(n.lastIndexOf(3));

误解:

刚开始,我以为从后往前数,那么应该是返回1, 因为数到底2个就是3吗,再加上数组从0开始。

我又去看文档:

lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。

既然是最后一个索引,那么我继续从后往前数, 得到4.

但是:

各位运行一下就会发现结果是5!

这?

于是我写下:

按数到第一个, 如果从后往前数的话则应该是1, 从前往后就是2;
按数到第二个,从后往前第2个就,是4,从前往后第2个是5;

也就是说这是从前往后数得到的5.

那?

其实我误解了索引这个东西

索引不存在从哪边数,它是定的。
也就是说,一个元素对应一个索引,不会变的。
那么, 对于同一个元素不管是从前往后(indexOf)还是从后往前(lastIndexOf)查找,返回值应该是一样的。

var n = [1, 2, 3, 4, 5, 3,1];
console.log(n.indexOf(4));
console.log(n.lastIndexOf(4));

上面都返回3,我想lastIndexOf的出现是为了性能的原因吧,如果离后面近就用lastIndexOf,但是它又是找到最后一个索引,这有个屁用?

总结:

indexOf 从前往后第一个,返回索引

lastIndexOf 从后往前最后一个,返回索引

所以这2个查找的就是同一个元素, 不同的写法,而且始终只能返回索引小的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86789.html

相关文章

  • Java™ 教程(操纵字符串中的字符)

    操纵字符串中的字符 String类有许多方法可用于检查字符串的内容,查找字符串中的字符或子字符串,更改大小写以及其他任务。 按索引获取字符和子字符串 你可以通过调用charAt()访问器方法获取字符串中特定索引处的字符,第一个字符的索引是0,而最后一个字符的索引是length()-1,例如,以下代码获取字符串中索引9处的字符: String anotherPalindrome = Niagara....

    Corwien 评论0 收藏0
  • 利用localStorage本地储存js文件

    摘要:通过采用同步的形式获取内容,取得内容后,执行文件的内容,设置保存到中,再删除中上个版本的文件。同步获取文件内容。 利用localStorage储存js文件,只有在第一次访问该页面的时候加载js文件,以后在访问的时候加载本地localStorage执行 封装lsFile类 有url、filename(key前缀)、lname(key)、filetext(值)属性 var lstora...

    haitiancoder 评论0 收藏0
  • Android自定义收银键盘(原创)的文章

    摘要:效果图源码地址最近开发项目需要自定义收银键盘,网上查了查都感觉不是太好,于是自己写了一个,自定义的键盘主要是根据结合来写的如下然后自己写了一个,设置了键盘的文字和类型。 效果图:[(showImg(https://segmentfault.com/img/remote/1460000010841350);1)] 源码地址(github)最近开发项目需要自定义收银键盘,网上查了查都感觉不...

    kuangcaibao 评论0 收藏0
  • 【underscore 源码解读】如何优雅地写一个『在数组中寻找指定元素』的方法

    摘要:今天要讲的是,如何在数组中寻找元素,对应中的,,,以及方法。如果往一个有序数组中插入元素,使得数组继续保持有序,那么这个插入位置是这就是这个方法的作用,有序,很显然用二分查找即可。 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中。 阅读一...

    0x584a 评论0 收藏0

发表评论

0条评论

罗志环

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<