2012-11-21 14 views
5

Eventuali duplicati:
Does JavaScript Guarantee Object Property Order?Inserimento di immobili in oggetto JSON in una posizione specifica

vorrei sapere come posso inserire un immobile oggetto JSON in una posizione specifica? Supponiamo questo oggetto Javascript:

var data = { 
    0: 'lorem', 
    1: 'dolor sit', 
    2: 'consectetuer' 
} 

Ho un ID e una stringa, come:

var id = 6; 
var str = 'adipiscing'; 

Ora, vorrei inserire il id tra il 0 e 1 (per esempio) ed è dovrebbe essere come:

data = { 
    0: 'lorem', 
    6: 'adipiscing', 
    1: 'dolor sit', 
    2: 'consectetuer' 
} 

Come posso fare questo? C'è qualche soluzione jQuery per questo?

+0

Non penso che le specifiche ECMAScript dica che le proprietà dell'oggetto devono mantenere qualsiasi ordine. –

+0

Non puoi. Le proprietà dell'oggetto JavaScript non hanno un ordine deterministico. –

+0

Se hai bisogno di un ordine deterministico di indici numerici, dovresti invece usare un 'Array'' [] '. –

risposta

4

Per specificare un ordine in cui sono collocati gli elementi di un oggetto, è necessario utilizzare un array di oggetti, in questo modo:

data = [ 
    {0: 'lorem'}, 
    {1: 'dolor sit'}, 
    {2: 'consectetuer'} 
] 

si può quindi spingere un elemento ad una certa posizione nella array:

// Push {6: 'adipiscing'} to position 1 
data.splice(1, 0, {6: 'adipiscing'}) 

// Result: 
data = [ 
    {0: 'lorem'}, 
    {6: 'adipiscing'}, 
    {1: 'dolor sit'}, 
    {2: 'consectetuer'} 
] 
// Access it: 
data[0][0] //"lorem" 

Tuttavia, questo renderà gli indici che hai specificato ({0:) praticamente inutile.

Problemi correlati