2010-12-20 18 views
8

mam '' tablicę asocjacyjną dla JS, zJak uzyskać dostęp do pierwszego klucza tablicy "asocjacyjnej" w JavaScript?

array['serial_number'] = 'value' 

numer_seryjny i wartości są ciągami. np. array['20910930923'] = '20101102'

Posortowałem według wartości, działa poprawnie. Powiedzmy, że otrzymam obiekt "posortowany";

Teraz chcę uzyskać dostęp do pierwszego KEY "posortowanej" tablicy. Jak to zrobić? Nie mogę myśleć muszę iteracji przy

for (var i in sorted) 

i po prostu przestać ther pierwszej ...

dzięki

EDIT: Właśnie w celu wyjaśnienia, wiem, że js nie obsługuje asocjacyjne tablice (dlatego w tytule umieściłem go w dużym przecinku).

+1

http://stackoverflow.com/questions/909003/javascript-getting-the-first-index-of-an-object – Anders

+0

jak ty sortowania tablicy? – Emmett

+0

Emmett: wykonując to: http://www.jamesrutherford.com/blog/2010/08/07/javascript-associative-array-sort/ – faboolous

Odpowiedz

1

W rzeczywistości JavaScript nie obsługuje tablic asocjacyjnych, więc nie można wykonać pętli w domniemanej kolejności (np. Nie można uzyskać do niego dostępu za pośrednictwem właściwości indeksatora array[0] nie uzyska dostępu do pierwszego elementu w obiekcie). Składnia sprawia, że ​​wygląda tak, jak ma, ale w rzeczywistości tak nie jest. Więc nie masz "porządku" dla swoich obiektów.

http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

Javascript nie ma, i nie wsparcia asocjacyjnych. Jednak ... Wszystkie tablice w języku JavaScript są obiektami , a składnia obiektu JavaScript daje podstawową emulację jednostki asocjacyjnej skojarzonej z tablicą . Z tego powodu powyższy przykładowy kod będzie działał. Be ostrzegł, że to nie jest prawdziwa tablica i ma prawdziwe pułapki, jeśli spróbujesz użyć jej. Element "person" w przykładzie staje się częścią właściwości i metod obiektu Array , po prostu , takich jak .length, .sort(), .splice() i z wszystkimi innymi wbudowanymi właściwościami i metodami .

+1

uhm, obiekty to tablice asocjacyjne? – falstro

+3

W JavaScript nie ma tablic asocjacyjnych, to wszystko jest wielkim, szalonym obiektem. – Anders

+1

@Anders; Potahto z ziemniaków, nie ma obiektów, wszystkie są wielkimi, dziwacznymi tablicami asocjacyjnymi. – falstro

4

Właściwości obiektu JavaScript są określone jako bez zamówienia, much though many people wish it were different. Jeśli potrzebujesz zamawianie, porzucić wszelkie próby wykorzystania obiektu i używać Array zamiast, albo do przechowywania przedmiotów nazwa-wartość:

var nameValues = [ 
    {name: '20910930923', value: '20101102'}, 
    {name: 'foo', value: 'bar'} 
]; 

... lub jako uporządkowaną listę nazw własności do korzystania z istniejącego obiektu :

var obj = { 
    '20910930923': '20101102', 
    'foo': 'bar' 
}; 

var orderedPropertyNames = ['20910930923', 'foo']; 
0

Wystarczy myśleć poza czubek mojej głowy, ale może masz inny tablica z par wartości kluczowych zamienione?

Tak więc odpowiedź byłaby arrayKeyValueReversed ['20101102'] = '20910930923';

Podczas sortowania macierzy należy użyć pierwszego elementu (array [0]) jako klucza, aby uzyskać wartość w tablicyKeyValueReversed.

2

Spróbuj tego:

// Some assoc list 
var offers = {'x':{..some object...}, 'jjj':{...some other object ...}}; 

// First element (see attribution below) 
return offers[Object.keys(offers)[0]]; 

// Last element (thanks to discussion on finding last element in associative array :) 
return offers[Object.keys(offers)[Object.keys(offers).length - 1]]; 
Powiązane problemy