2010-02-04 9 views

Odpowiedz

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

Termin zalecany jest elementem, zamiast klucza.

EDYCJA: Czy masz na myśli ostatni indeks? To jest myarray.length - 1. Należy pamiętać, że tablice JavaScript mogą być indeksowane tylko numerycznie (chociaż tablice są również obiektami, co powoduje pewne zamieszanie).

+0

To może być źle, trzeba spojrzeć na to stanowisko. – user198729

+0

Co "może być nie tak"? –

+4

@ user198729 Tablice w JavaScript działają inaczej niż PHP. PHP implementuje je jako rzadkie tablice, dlatego indeks pierwszego/ostatniego elementu nie zawsze wynosi 0/len-1. W JavaScript wszystkie tablice są gęstymi tablicami, zero-podstawowymi, w pełni wypełnionymi (może niezdefiniowanymi) elementami indeksu od 0 do. Length-1. – nicerobot

2

ostatni klucz tablicy jest zawsze arr.length-1 jak tablice zawsze zaczynają się kluczowym 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

Jeśli jest to płaska tablica, by to zrobić:

return array.length - 1; 

Jednakże, jeśli masz tablicę asocjacyjną , musisz znać klucz i przechodzić przez niego. Pamiętaj jednak, że JavaScript nie zna czegoś takiego jak "tablica asocjacyjna", ponieważ większość elementów w JavaScript to obiekty.

Nota prawna: Użycie tablic asocjacyjnych w kodzie JavaScript to generally not a good practice i może prowadzić do problemów.

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

Dlaczego warto używać 'Tablicy'? Nie używasz jego arrasucji (tj. Magicznej właściwości 'length'), więc równie dobrze możesz użyć' Object'. Specyfikacja JavaScript nie daje gwarancji na kolejność klawiszy podczas używania pętli 'for ... in', więc nie ma czegoś takiego jak" ostatni klucz " –

+0

W pierwszym przykładzie użyłem właściwości length. Ponieważ ta właściwość nie jest dostępna w tablicach asocjacyjnych, dodałem drugi przykład, który w przejrzysty sposób demonstruje przypadek użycia "symulowanego ostatniego klucza".Ponieważ PO znałby nazwę ostatniego klucza, możliwe byłoby uzyskanie rzeczywistego elementu za pomocą powyższej metody. –

+0

Re. właściwość długości, miałem na myśli drugi przykład, a nie pierwszy. –

2

Najpierw przepraszam za słaby angielski. załóżmy, że twoja tablica jest "tablicą powiązaną z kluczem" z kluczami łańcuchowymi w formacie liczbowym. Będziesz potrzebował 3 kroków: uzyskać wszystkie klucze tablicy. zamień klucze tablicy na liczbę całkowitą. pobierz maks. Lub długość lub dowolną inną właściwość klawiszy.

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 

nadzieję, że pomogło

+0

następnie, aby odpowiedzieć na oryginalne pytanie, jaki jest ostatni klucz w tablicy asocjacyjnej musiałem zrobić: stringKeys [len-1] lub jeśli chcesz liczbę całkowitąKeys [len-1]. –

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

Tutaj myArray jest nazwą tablicy.

To jest rozwiązanie oparte na Twoim zadawanym pytaniu. Zakładając, że tablica jest jednowymiarową tablicą lub wszystkie klucze tablicy są numeryczne.

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

Powiązane problemy