JavaScript - Array lastIndexOf() Method

Description

Javascript array lastIndexOf() method returns the last index at which a given element can be found in the array, or -1 if it is not present. The array is searched backwards, starting at fromIndex.

Syntax

Its syntax is as follows −

array.lastIndexOf(searchElement[, fromIndex]);

Parameter Details

Return Value

Returns the index of the found element from the last.

Compatibility

This method is a JavaScript extension to the ECMA-262 standard; as such it may not be present in other implementations of the standard. To make it work, you need to add the following code at the top of your script.

if (!Array.prototype.lastIndexOf)
{
   Array.prototype.lastIndexOf = function(elt /*, from*/)
   {
      var len = this.length;
      var from = Number(arguments[1]);
      
      if (isNaN(from))
      {
         from = len - 1;
      }
      else
      {
         from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);

         if (from < 0)
         from += len;
         
         else if (from >= len)
         from = len - 1;
      }
      
      for (; from > -1; from--)
      {
         if (from in this &&
         this[from] === elt)
         return from;
      }
      return -1;
   };
}

Example

Try the following example.

<html>
   <head>
      <title>JavaScript Array lastIndexOf Method</title>
   </head>
   
   <body>
   
      <script type="text/javascript">
         if (!Array.prototype.lastIndexOf)
         {
            Array.prototype.lastIndexOf = function(elt /*, from*/)
            {
               var len = this.length;
               var from = Number(arguments[1]);
               
               if (isNaN(from))
               {
                  from = len - 1;
               }
               else
               {
                  from = (from < 0)
                  ? Math.ceil(from)
                  : Math.floor(from);
               
                  if (from < 0)
                  from += len;
               
                  else if (from >= len)
                  from = len - 1;
               }
               for (; from > -1; from--)
               {
                  if (from in this &&
                  this[from] === elt)
                  return from;
               }
               return -1;
            };
         }
      
         var index = [12, 5, 8, 130, 44].lastIndexOf(8);
         document.write("index is : " + index ); 
      
         var index = [12, 5, 8, 130, 44, 5].lastIndexOf(5);
         document.write("<br />index is : " + index ); 
      </script>
   </body>
</html>

Output

index is : 2
index is : 5