2010-12-20 8 views
8

avro 'associativa' array A js, conCome accedere alla prima chiave di un array 'associativo' in JavaScript?

array['serial_number'] = 'value' 

serial_number e il valore sono stringhe. ad es. array['20910930923'] = '20101102'

L'ho ordinato per valore, funziona correttamente. Diciamo che torno all'oggetto "ordinato";

Ora voglio accedere al primo KEY della matrice 'ordinata'. Come faccio? Non riesco a pensare ho bisogno di un'iterazione con

for (var i in sorted) 

e solo smettere dopo ther primo ...

grazie

Edit: Giusto per chiarire, so che js non supporta associativa array (è per questo che ho messo tra virgolette nel titolo).

+1

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

+0

come stai Ordinamento della serie? – Emmett

+0

Emmett: facendo questo: http://www.jamesrutherford.com/blog/2010/08/07/javascript-associative-array-sort/ – faboolous

risposta

1

In realtà JavaScript non supporta gli array associativi, quindi non è possibile eseguirne il loop in un ordine implicito (ad esempio non è possibile accedervi tramite la proprietà dell'indicizzatore array[0] non sarà possibile accedere al primo elemento nell'oggetto). La sintassi è ciò che lo fa sembrare, ma in realtà non lo fa. Quindi non hai "Ordine" per i tuoi oggetti.

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

Javascript non hai, e non supporto Array Associativi. Tuttavia ... Tutti gli array in Javascript sono oggetti e la sintassi degli oggetti di Javascript fornisce un'emulazione di base di una matrice associativa . Per questo motivo il codice di esempio sopra funzionerà effettivamente. Be ha avvertito che questo non è un vero array e ha dei veri e propri baffi se si tenta di usare . L'elemento "person" nell'esempio diventa parte delle proprietà e dei metodi dell'oggetto Array , solo come .length, .sort(), .splice() e tutte le altre proprietà incorporate e i metodi .

+1

uhm, gli oggetti sono array associativi? – falstro

+3

Non ci sono array associativi in ​​JavaScript, è tutto un grande oggetto. – Anders

+1

@ Ants; Potahto di patate, non ci sono oggetti, sono tutti grandi array associativi. – falstro

4

Le proprietà dell'oggetto JavaScript non vengono specificate, much though many people wish it were different. Se avete bisogno di ordine, abbandonare ogni tentativo di utilizzare un oggetto e utilizzare un Array invece, sia per memorizzare gli oggetti nome-valore:

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

... o come un elenco ordinato di nomi di proprietà da utilizzare con il vostro oggetto esistente :

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

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

Basta pensare fuori della parte superiore della mia testa, ma potreste avere un altro vettore con le coppie di valori chiave scambiato?

Quindi la risposta sarebbe arrayKeyValueReversed ['20101102'] = '20910930923';

Quando si ordina l'array, utilizzare il primo elemento (array [0]) come chiave per ottenere il valore nell'arrayKeyValueReversed.

2

Prova questo:

// 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]]; 
Problemi correlati