2010-02-04 8 views

risposta

16
var foo = myarray[myarray.length - 1]; 

Il termine preferito è elemento, piuttosto che chiave.

MODIFICA: O intendi l'ultimo indice? Questo è myarray.length - 1. Tieni presente che gli array JavaScript possono essere indicizzati solo numericamente (sebbene gli array siano anche oggetti, il che causa una certa confusione).

+0

Può essere sbagliato, si dovrebbe dare un'occhiata a quel post. – user198729

+0

Cosa "può essere sbagliato"? –

+4

@ user198729 Gli array in JavaScript funzionano diversamente da PHP. PHP li implementa come array sparsi, motivo per cui l'indice del primo/ultimo elemento non è sempre 0/len-1. In JavaScript tutti gli array sono array densi, elementi di indice a base zero, completamente popolati (forse non definiti) da 0 a .length-1. – nicerobot

2

L'ultima chiave di un array è sempre arr.length-1 come array iniziano sempre con chiave 0:

var arr = new Array(3); // arr === [], arr.length === 3 
arr.push(0);    // arr === [undefined, undefined, undefined, 0], arr.length === 4 
arr[arr.length-1]  // returns 0 

var arr = [];   // arr === [], arr.length === 0 
arr[3] = 0;    // arr === [undefined, undefined, undefined, 0], arr.length === 4 
arr[arr.length-1]  // returns 0 
4

Se è una matrice piatta, questo farebbe:

return array.length - 1; 

Tuttavia, se hai un array associativo , dovresti conoscere la chiave e passarci sopra. Si noti che JavaScript non conosce un "array associativo", poiché la maggior parte degli elementi in JavaScript sono oggetti.

Disclaimer: L'utilizzo di array associativi in ​​JavaScript è generally not a good practice e può causare problemi.

var x = new Array(); 
x['key'] = "value"; 
for (i in x) 
{ 
    if (i == 'key') 
    { 
     alert ("we got "+i); 
    } 
} 
+1

Perché usare una 'matrice '? Non stai usando l'arrayness di esso (cioè la proprietà magic 'length') così potresti usare pure un' Object'. Inoltre, le specifiche JavaScript non garantiscono l'ordine delle chiavi quando si utilizza un ciclo 'for ... in', quindi non esiste l'ultima chiave" –

+0

Nel primo esempio, ho usato la proprietà length. Poiché questa proprietà non è disponibile su array associativi, ho aggiunto il secondo esempio, che dimostra chiaramente un caso d'uso di "ultima chiave simulata".Poiché l'OP conoscerebbe il nome dell'ultima chiave, sarebbe possibile ottenere l'elemento effettivo con il metodo sopra. –

+0

Re. la proprietà length, mi riferivo al secondo esempio, non al primo. –

2

prima scusa per l'inglese scarso. si suppone che l'array sia "array associato a chiave" con chiavi stringa in formato numerico. avrete bisogno di 3 passi: ottenere tutte le chiavi di array. converte chiavi di array in numero intero. ottiene la lunghezza massima o qualsiasi altra proprietà di chiavi.

stringKeys= Object.keys(keyValueArray);//get keys of array 
integerKeys=stringKeys.map(Number);//convert to integer 
mx=Math.max.apply(integerKeys);//get max 
len=stringKeys.length;//get length 

speranza ho aiutato

+0

quindi rispondere alla domanda originale di quale sia l'ultima chiave nell'array associativo che dovevo fare: stringKeys [len-1] o se si desidera un intero intero di chiavi [len-1]. –

0
Math.max(...[...myArray.keys()]); 

Qui myArray è il nome di un array.

Questa è una soluzione basata sulla domanda inviata. Supponendo che l'array sia un array monodimensionale o che tutti i tasti dell'array siano numerici.

Letture: Math.max, Array.prototype.keys(), Iterators and generators

Problemi correlati