返回数组对象名称

时间:2018-03-12 10:14:10

标签: javascript arrays json

我有一个包含对象的数组。

var obj1 = [
 user1 = {
  "name" : "John",
  "age" : 24,
  "city" : "London"
 },
 user2 = {
  "name" : "Jane",
  "age" : 22,
  "city" : "New York",
 }
];

现在我想要做的是获取数组中对象的名称,所以在这种情况下它将是" user1"和" user2"。

首先尝试

起初我尝试这样做:

for(i = 0; i < obj1.length; i++){
 document.getElementById('app').innerHTML += obj1[i];
}

结果是[object Object][object Object]

第二次尝试

然后我尝试在对象上使用JSON.strigify,但之后它返回整个对象,而不是我想要的名称:

for(i = 0; i < obj1.length; i++){
 document.getElementById('app').innerHTML += JSON.stringify(obj1[i]);
}

结果:

{"name":"John","age":24,"city":"London"}{"name":"Jane","age":22,"city":"New York"}

问题

是否可能,如果是,我应该如何显示数组内所有对象的名称,但不显示其内容。 期望的结果:

user1 user2

1 个答案:

答案 0 :(得分:1)

这就是您的代码所做的事情:

  1. 创建对象
  2. 隐式创建一个名为user1的全局变量,并将该对象分配给它
  3. 创建另一个对象
  4. 隐式创建一个名为user2的全局变量,并将该对象分配给它
  5. 创建数组
  6. 使用变量user1user2
  7. 的值填充数组
  8. 创建一个名为obj1的局部变量并将数组分配给它
  9. 数组知道变量user1user2 。它们只是复制到其中的数据的来源。

    对象知道变量user1user2。 JavaScript中的关系是单向的。变量可以引用一个对象(事实上,多个变量可以引用同一个对象)但是没有办法回溯。

      

    现在我想要做的是获取数组中对象的名称,所以在这种情况下它将是&#34; user1&#34;和&#34; user2&#34;。

    你不能。

    (好吧,不是没有像做一些可怕的猜测,比如循环遍历每个全局变量(window对象的属性,仅限浏览器JS)并将其与对象进行比较......如果你正沿着那条路走下去那么你需要重新设计你的代码,以更合理的方式实现你的真正目标。)