Obtener una lista de claves de matriz asociativas

Resuelto Simon_Weaver asked hace 15 años • 6 respuestas

Tengo una matriz asociativa 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 entender la terminología correcta, no existe una 'matriz asociativa' en JavaScript; técnicamente, esto es solo una objecty son las claves de objeto que queremos.

Simon_Weaver avatar Feb 18 '09 05:02 Simon_Weaver
Aceptado

Prueba esto:

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

hasOwnPropertyes necesario porque es posible insertar claves en el objeto prototipo de dictionary. Pero normalmente no desea que esas claves se incluyan en su lista.

Por ejemplo, si haces esto:

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

y luego haz un for...inbucle dictionary, obtendrás ay b, pero también obtendrás c.

JW. avatar Feb 17 '2009 22:02 JW.
for (var key in dictionary) {
  // Do something with key
}

Es la declaración for...in .

wombleton avatar Feb 17 '2009 22:02 wombleton