recorrer objetos ejemplos asociativo array javascript arrays

javascript - objetos - Obtención de una lista de claves de matriz asociativa



object javascript (6)

Tengo una matriz asociativa en Javascript:

var dictionary = { "cats": [1,2,3,4,5], "dogs": [6,7,8,9,10] };

¿Cómo consigo las claves de este diccionario? es decir, quiero

var keys = ["cats", "dogs"];

Edite 7 años después: solo para que la terminología sea correcta (no existe tal cosa como una ''matriz asociativa'' en Javascript), esto es técnicamente solo un object y son las claves de objeto que queremos.


Actualmente estoy usando la respuesta de Rob de la Cruz

Object.keys(obj)

y en un archivo cargado desde el principio tengo algunas líneas de código prestadas de otro lugar en Internet que cubren el caso de versiones antiguas de intérpretes de script que no tienen Object.keys integrado

if (!Object.keys) { Object.keys = function(object) { var keys = []; for (var o in object) { if (object.hasOwnProperty(o)) { keys.push(o); } } return keys; }; }

Creo que este es el mejor de los dos mundos para proyectos grandes: código moderno y compatible con versiones anteriores de navegadores, etc.

Efectivamente, pone la solución de JW en la función cuando Object.keys (obj) de Rob de la Cruz no está disponible de forma nativa.


Forma simple de JQUERY.

Esto es lo que uso
DictionaryObj es el objeto de diccionario javascript que desea atravesar. valor, la clave del curso son los nombres de ellos en el diccionario.

$.each(DictionaryObj, function (key, value) { $("#storeDuplicationList") .append($("<li></li>") .attr("value", key) .text(value)); });


Prueba esto:

var keys = []; for (var key in dictionary) { if (dictionary.hasOwnProperty(key)) { keys.push(key); } }

hasOwnProperty es necesario porque es posible insertar claves en el objeto prototipo del dictionary . Pero normalmente no quieres que esas llaves estén incluidas en tu lista.

Por ejemplo, si haces esto:

Object.prototype.c = 3; var dictionary = {a: 1, b: 2};

y luego haga un for...in loop over dictionary , obtendrá a y b , pero también obtendrá c .


Puedes usar: Object.keys(obj)

Ejemplo:

var dictionary = { "cats": [1, 2, 37, 38, 40, 32, 33, 35, 39, 36], "dogs": [4, 5, 6, 3, 2] }; // Get the keys var keys = Object.keys(dictionary); console.log(keys);

Vea la referencia a continuación para el soporte del navegador. Es compatible con Firefox 4.20, Chrome 5, IE9. El siguiente enlace contiene un fragmento de código que puede agregar si Object.keys() no es compatible con su navegador.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys


Solo una nota rápida, desconfíe de usar for..in si usa una biblioteca (jQuery, prototype, etc.), ya que la mayoría de ellos agregan métodos a los objetos creados (incluidos los diccionarios).

Esto significará que cuando los recorras, los nombres de los métodos aparecerán como claves. Si está utilizando una biblioteca, mire la documentación y busque una sección enumerable, donde encontrará los métodos correctos para la iteración de sus objetos.