2011-02-03 12 views
12

El problema es que Chrome clasifica automáticamente las propiedades del objeto.Chrome y probablemente las propiedades del objeto de ordenación de Opera automáticamente

Si tengo un objeto como:

var obj = {4: "first", 2: "second", 1: "third"}; 

entonces cuando lo haga a continuación:

for(var i in obj) { 
    console.debug(obj[i]); 
} 

que ver siguiente:

third second first

pero se espera que:

first second third

+0

posible duplicado de [Clasificación de javascript por valor de propiedad] (http://stackoverflow.com/questions/1069666/sorting-javascript-by-property-value) –

Respuesta

18

Nunca se basan en el orden de propiedades. No están ordenados y no existe una especificación que defina en qué orden se deben enumerar las propiedades.

Chrome orders properties with numeric keys numerically, mientras que otros navegadores las enumeran en orden de inserción. Depende de la implementación.

+0

'no hay ninguna especificación que defina en qué orden deben estar las propiedades enumerado' ..... Tengo una idea. ¿Qué tal el orden en que los PONEMOS? – Gavin

5

No debe esperar ningún pedido en particular para las claves en los bucles for..in. De the MDC docs:

A para ... iteración en bucle sobre las propiedades de un objeto en un orden arbitrario

Si desea ordenar usando las teclas numéricas, utilizar una matriz.

+0

Gracias, ya lo hice. :) – setty

Cuestiones relacionadas