JavaScript: metodo array lastIndexOf ()

Descrizione

Matrice Javascript lastIndexOf()restituisce l'ultimo indice in cui un dato elemento può essere trovato nell'array, o -1 se non è presente. L'array viene ricercato all'indietro, a partire dafromIndex.

Sintassi

La sua sintassi è la seguente:

array.lastIndexOf(searchElement[, fromIndex]);

Dettagli dei parametri

  • searchElement - Elemento da individuare nell'array.

  • fromIndex- L'indice dal quale iniziare la ricerca all'indietro. Il valore predefinito è la lunghezza dell'array, cioè verrà cercato l'intero array. Se l'indice è maggiore o uguale alla lunghezza dell'array, verrà eseguita la ricerca nell'intero array. Se negativo, viene considerato come offset dalla fine della matrice.

Valore di ritorno

Restituisce l'indice dell'elemento trovato dall'ultimo.

Compatibilità

Questo metodo è un'estensione JavaScript dello standard ECMA-262; come tale potrebbe non essere presente in altre implementazioni dello standard. Per farlo funzionare, è necessario aggiungere il codice seguente all'inizio dello 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;
   };
}

Esempio

Prova il seguente esempio.

<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>

Produzione

index is : 2
index is : 5