Búsqueda de sitios web

javascript - Obtener una lista de claves de un arreglo asociativo


Tengo un arreglo asociativo en JavaScript:

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

¿Cómo obtengo las claves de este diccionario? Es decir, quiero

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

Solo para tener la terminología correcta: no existe algo llamado 'array asociativo' en JavaScript; técnicamente, esto es solo un objeto y lo que queremos son las claves del objeto.

Respuesta #1

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 de dictionary. Pero normalmente no quieres que esas claves se incluyan en tu lista.

Por ejemplo, si haces esto:

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

y luego haz un bucle for...in sobre dictionary, obtendrás a y b, pero también obtendrás c.

Respuesta #2

for (var key in dictionary) {
  // Do something with key
}

Es la declaración for..in.

Respuesta #3

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);

Consulte la referencia a continuación para ver la compatibilidad del navegador. Es compatible con Firefox 4.20, Chrome 5 e Internet Explorer 9. Object.keys() contiene un fragmento de código que puede agregar si Object.keys() no es compatible con su navegador.

Respuesta #4

Solo una nota rápida. Ten cuidado al usar for..in si utilizas una biblioteca (jQuery, Prototype, etc.), ya que la mayoría de ellas agregan métodos a los objetos creados (incluidos los diccionarios).

Esto significará que cuando hagas un bucle sobre ellos, los nombres de los métodos aparecerán como claves. Si estás usando una biblioteca, mira la documentación y busca una sección enumerables, donde encontrarás los métodos correctos para la iteración de tus objetos.

Artículos relacionados