浅谈lastIndexOf

本日误会了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个查找的就是同一个元素, 差别的写法,而且一直只能返回索引小的。

    原文作者:xioqua
    原文地址: https://segmentfault.com/a/1190000008597157
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞