2012-10-09 14 views
5

Duplicar posibles:
how to fetch array keys with jQuery?array_keys función php equivalentes en jQuery

php función integrada de array_keys(), equivalente en jQuery ¿hay alguna función integrada en jQuery similar a la de php array_keys(),.

Para sugerir

+1

Mira esto: http://stackoverflow.com/questions/1254227/how-to-fetch-array-keys-with-jquery – Josh

+1

Por cierto: las matrices en Javascript solo pueden tener teclas numéricas, no existe una matriz asociativa. Solo puede ser simulado por un objeto ([pero tiene defectos] (http://blog.kevinchisholm.com/javascript/associative-arrays-in-javascript/)) –

Respuesta

4

Usted tendrá que definir su propia función para obtener la misma funcionalidad. Pruebe esto:

function arrayKeys(input) { 
    var output = new Array(); 
    var counter = 0; 
    for (i in input) { 
     output[counter++] = i; 
    } 
    return output; 
} 

arrayKeys({"one":1, "two":2, "three":3}); // returns ["one","two","three"] 
1

Tome un vistazo a PHPJS, un proyecto que tiene como objetivo reproducir muchas de las funciones de PHP en JavaScript básico con dependencias mínimas. En su caso, quiere array_keys.

3

No hay nada específico en jQuery para esto. Hay un método de JavaScript pero todavía no es ampliamente compatible con Object.keys(), por lo que las personas no lo usan para proyectos genéricos. Lo mejor que podía pensar es

var keys = $.map(your_object, function(value, key) { 
    return key; 
}); 
+0

Esta es la mejor respuesta, pero 'Object.keys () 'es ampliamente compatible ahora, incluyendo IE9 + https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys – sMyles

3

No es necesario jQuery o cualquier otra biblioteca para esto - es una parte estándar de Javascript.

for(var key in myObject) { 
    alert(key); 
} 

Eso debería ser suficiente para recorrer el objeto. Pero si usted quiere conseguir realmente las llaves en su propia serie (es decir, convertirlo en un verdadero clon de la función de PHP), entonces es bastante trivial para extender el anterior:

function array_keys(myObject) { 
    output = []; 
    for(var key in myObject) { 
     output.push(key); 
    } 
    return output; 
} 

Nota, hay advertencias con el uso la técnica for(..in..) para objetos que tienen propiedades o métodos que no desea incluir (por ejemplo, propiedades del sistema central), pero para un objeto simple que ha creado usted mismo o de una cadena JSON, es ideal.

(Para obtener más información sobre las advertencias, ver http://yuiblog.com/blog/2006/09/26/for-in-intrigue/)

1

En JavaScript no existen arreglos asociativos. Los objetos (literales de objeto) manejan casos similares.

var keys = [], i = 0;  
for(keys[ i++ ] in yourObject); 

Y ahora keys contiene todos los nombres de las propiedades yourObject (claves).