我有一个包含对象的数组。
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
答案 0 :(得分:1)
这就是您的代码所做的事情:
user1
的全局变量,并将该对象分配给它user2
的全局变量,并将该对象分配给它user1
和user2
obj1
的局部变量并将数组分配给它数组知道变量user1
和user2
。它们只是复制到其中的数据的来源。
对象知道变量user1
和user2
的无。 JavaScript中的关系是单向的。变量可以引用一个对象(事实上,多个变量可以引用同一个对象)但是没有办法回溯。
现在我想要做的是获取数组中对象的名称,所以在这种情况下它将是&#34; user1&#34;和&#34; user2&#34;。
你不能。
(好吧,不是没有像做一些可怕的猜测,比如循环遍历每个全局变量(window
对象的属性,仅限浏览器JS)并将其与对象进行比较......如果你正沿着那条路走下去那么你需要重新设计你的代码,以更合理的方式实现你的真正目标。)