淺談lastIndexOf

今天誤解了Array.prototype.lastIndexOf函數, 有必要在這裏寫出來, 幫助像我同樣的新手。數組

下面這個返回幾?函數

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

誤解:性能

剛開始,我覺得從後往前數,那麼應該是返回1, 由於數到底2個就是3嗎,再加上數組從0開始。prototype

我又去看文檔:code

lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或變量)在數組中的最後一個的索引,若是不存在則返回 -1。從數組的後面向前查找,從 fromIndex 處開始。索引

既然是最後一個索引,那麼我繼續從後往前數, 獲得4.ip

可是:文檔

各位運行一下就會發現結果是5!get

這?console

因而我寫下:

按數到第一個, 若是從後往前數的話則應該是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個查找的就是同一個元素, 不一樣的寫法,並且始終只能返回索引小的。

相關文章
相關標籤/搜索