获取对象的名称

时间:2013-03-05 12:46:06

标签: javascript arrays json

我有这个数组Json,我怎么能得到对象的名字? 这是我的数组json:

var datos =  {"animales":[
{
    "nombre":"Lucy",
    "animal":"Cat",
    "breed":"American Shorthair",
    "note":"She raised me"
},
{
    "nombre":"Homer",
    "animal":"Cat",
    "breed":"unknown",
    "note":"Named after a world-famous bassoonist"
},
{
    "nombre":"Muchacha",
    "animal":"Dog",
        "breed":"mutt",
        "note":"One of the ugliest dogs I’ve ever met"
    }
]}

我怎么能得到钥匙的名字? (nombre,动物,品种,注意) 我试着用这种方式,但它不起作用:

for (key in datos) {
                HtmlT += "<td>" + datos.animales[key]+ "</td>"; // it should return nombre
            }

datos.animales [key]返回undefind

4 个答案:

答案 0 :(得分:1)

您列出的名称不是datos的属性,它们是animales数组中条目的属性。因此,您必须循环遍历animales数组,并且对于每个条目,使用for-in循环遍历该条目的属性名称。

var animales, index, entry;

animales = datos.animales;
for (index = 0; index < animales.length; ++index) {
    entry = animales[index];
    for (key in entry) {
        // Here, `key` will have the names `"nombre"`, `"animal"`, etc.
    }
}

或者在启用ES5的环境中或使用ES5垫片:

dataos.animales.forEach(function(entry) {
    var key;

    for (key in entry) {
        // Here, `key` will have the names `"nombre"`, `"animal"`, etc.
    }
});

请注意,所有条目的属性名称可能不同(当然,如果您的数据定义方式可能如此)。

答案 1 :(得分:0)

试试这个:

for (key in datos.animales[0]) { HtmlT += "" + datos.animales[0][key]+ ""; }

这是您正在寻找的实际元素。

您可能希望遍历数据阵列

答案 2 :(得分:0)

您可以尝试:

for(var index in datos.animales){
    var animal = datos.animales[i];
    for(var prop in animal){
      console.log(prop+":"+animal[prop]);
    }
}

答案 3 :(得分:-1)

尝试

for (key in datos) {
  for (animal in datos[key]) {
    HtmlT+= "\"" + animal + "\"";
  }
}

在执行for-each类型循环时,key是实际键,object[key]将返回值。