2010-02-04 6 views

Répondre

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

Le terme préféré est un élément, plutôt que de clé.

EDIT: Ou voulez-vous dire le dernier indice? C'est myarray.length - 1. Gardez à l'esprit que les tableaux JavaScript ne peuvent être indexés que numériquement (bien que les tableaux soient aussi des objets, ce qui provoque une certaine confusion).

+0

Il peut se tromper, vous devriez jeter un oeil à ce poste. – user198729

+0

Qu'est-ce qui "peut-être faux"? –

+4

@ user198729 Les tableaux de JavaScript fonctionnent différemment de PHP. PHP les implémente comme des tableaux clairsemés, c'est pourquoi les index du premier/dernier élément ne sont pas toujours 0/len-1. En JavaScript, tous les tableaux sont des tableaux denses, des éléments d'index entièrement peuplés (peut-être indéfinis) de 0 à .length-1. – nicerobot

2

La dernière touche d'un tableau est toujours arr.length-1 sous forme de tableaux commencent toujours avec la clé 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

Si c'est un tableau plat, ce serait faire:

return array.length - 1; 

Cependant, si vous avez un tableau associatif , vous devez connaître la clé et la parcourir. Notez cependant que JavaScript ne connaît pas de "tableau associatif", car la plupart des éléments de JavaScript sont des objets.

Avertissement: Utilisation des tableaux associatifs en JavaScript est generally not a good practice et peut entraîner des problèmes.

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

Pourquoi utiliser un 'Array'? Vous n'utilisez pas l'étendue de celle-ci (c'est-à-dire la propriété magic 'length'), donc vous pouvez aussi bien utiliser un' Object'. En outre, la spécification JavaScript ne garantit pas l'ordre des clés lors de l'utilisation d'une boucle 'for ... in', donc la" dernière clé "n'existe pas –

+0

Dans le premier exemple, j'ai utilisé la propriété length. Comme cette propriété n'est pas disponible sur les tableaux associatifs, j'ai ajouté le second exemple, qui montre clairement un cas d'utilisation d'une "dernière clé simulée".Puisque l'OP connaîtrait le nom de la dernière clé, il serait possible d'obtenir l'élément réel avec la méthode ci-dessus. –

+0

Re. la propriété de longueur, je faisais référence au deuxième exemple, pas le premier. –

2

d'abord désolé pour un mauvais anglais. supposez que votre tableau est "tableau associé à une clé" avec des clés de chaîne au format numérique. vous aurez besoin de 3 étapes: obtenir toutes les clés de tableau. convertit les clés de tableau en nombre entier. obtenir max ou longueur ou toute autre propriété de clés.

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 

espoir j'ai aidé

+0

puis de répondre à la question initiale de savoir quelle est la dernière clé dans le tableau associatif que j'avais à faire: stringKeys [len-1] ou si vous voulez un entier integerKeys [len-1]. –

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

Ici myArray est le nom d'un tableau.

Ceci est une solution basée sur votre question référée. En supposant que le tableau est un tableau à une seule dimension ou que toutes les clés du tableau sont numériques.

lit comme suit: Math.max, Array.prototype.keys(), Iterators and generators

Questions connexes