如何使用Javascript中的唯一键访问多维对象中的值?
如何访问下面对象中的如何使用Javascript中的唯一键访问多维对象中的值?,javascript,object,Javascript,Object,如何访问下面对象中的name值?此外,由于唯一键(即friend1和friend2)包含其他键/值对,因此此对象是否具有特殊名称 var friends = { "friend1":{ "name":"ana", "position":1, "spouse":"billy" }, "friend2":{ 'name':'keri',
name
值?此外,由于唯一键(即friend1
和friend2
)包含其他键/值对,因此此对象是否具有特殊名称
var friends = {
"friend1":{
"name":"ana",
"position":1,
"spouse":"billy"
},
"friend2":{
'name':'keri',
'position':2,
'spouse':'david'
}
};
请注意,这是我正在进行的项目的简化版本。我意识到有一种更好的方法来保存好友列表的数据——要记住的一点是,保存其他键/值对的键是唯一的
我已经试过了,但显然不起作用(即“未定义”):
for(i=0;i
下面是一个示例。请尝试以下内容
var keys = Object.keys(friends);
for( i = 0; i < keys.length; i++ ) {
var theFriend = friends[keys[i]].name;
alert(theFriend);
}
var-keys=Object.keys(朋友);
对于(i=0;i
参考-尝试以下内容
var keys = Object.keys(friends);
for( i = 0; i < keys.length; i++ ) {
var theFriend = friends[keys[i]].name;
alert(theFriend);
}
var-keys=Object.keys(朋友);
对于(i=0;i
供参考-
您刚刚创建了一个新数组,并将i
的值放入其中
您需要告诉JavaScript您正在访问的i
属性是什么对象
friends[Object.keys(friends)[i]].name
您刚刚创建了一个新数组,并将i
的值放入其中
您需要告诉JavaScript您正在访问的i
属性是什么对象
friends[Object.keys(friends)[i]].name
请大师:
Maestro请:在ES5中,使用:
for (var index in friends) { // NB: index and name have function scope
var name = friends[index].name;
}
在ES6中,使用:
for (let friend of friends) { // NB: 'of', not 'in'
let name = friend.name;
}
如果必须对循环使用普通的,请确保在每次迭代中都不会计算循环不变量:
var keys = Object.keys(friends);
for (var i = 0, n = keys.length; i < n; ++i) {
var name = friends[i].name;
}
var-keys=Object.keys(朋友);
对于(变量i=0,n=keys.length;i
即使这样,也不建议使用此循环-使用带有for.的对象的单次传递更便宜。。在
中,创建一个键数组,然后遍历该数组。ES6<代码>用于。。of
更好。在ES5中,使用:
for (var index in friends) { // NB: index and name have function scope
var name = friends[index].name;
}
在ES6中,使用:
for (let friend of friends) { // NB: 'of', not 'in'
let name = friend.name;
}
如果必须对循环使用普通的,请确保在每次迭代中都不会计算循环不变量:
var keys = Object.keys(friends);
for (var i = 0, n = keys.length; i < n; ++i) {
var name = friends[i].name;
}
var-keys=Object.keys(朋友);
对于(变量i=0,n=keys.length;i
即使这样,也不建议使用此循环-使用带有for.的对象的单次传递更便宜。。在
中,创建一个键数组,然后遍历该数组。ES6<代码>用于。。当然
更好。大多数时候,如果你看到这样的结构,你就错了…@Alnitak谢谢你解决这个问题。我自己也没见过这种格式,但我遇到了一个基于中心位置计算距离的工具,我用他的代码构建了一个项目,在谷歌地图上放置多个标记。可能还有其他方法,但再次感谢您的评论。@Alnitak,我注意到您的编辑。非常感谢。所以变量friends
只是一个对象,与JSON无关?我见过其他类似这样的代码,人们称之为JSON,但我想肯定有一些不同。JSON是一种对象序列化格式,即,您得到的字符串看起来有点像JS对象文字(实际上是可以解析的)。至于你给出的另一个例子,这是一个恰当的用法,因为键是真正唯一的(而你的键似乎没有语义值),并且没有position
元素,看起来应该只是数组偏移量。大多数情况下,如果你看到这样的结构,你做错了…@Alnitak谢谢你解决这个问题。我自己也没见过这种格式,但我遇到了一个基于中心位置计算距离的工具,我用他的代码构建了一个项目,在谷歌地图上放置多个标记。可能还有其他方法,但再次感谢您的评论。@Alnitak,我注意到您的编辑。非常感谢。所以变量friends
只是一个对象,与JSON无关?我见过其他类似这样的代码,人们称之为JSON,但我想肯定有一些不同。JSON是一种对象序列化格式,即,您得到的字符串看起来有点像JS对象文字(实际上是可以解析的)。至于你给出的另一个例子,这是一个恰当的用法,因为键是真正唯一的(而你的键似乎没有语义值),并且没有position
元素,看起来它应该只是一个数组偏移量。哦,是的,您需要使用i
的值来获取密钥数组的值,然后将其用作friends对象的属性名。@Quentin,感谢您澄清您的原始答案。它现在可以工作了。@Quentin说真的,你把Object.keys(friends)[i]
放在循环中,每次迭代调用Object.keys
?!哦,是的,您需要使用i
的值来获取密钥数组的值,然后将其用作friends对象的属性名。@Quentin,感谢您澄清您的原始答案。它现在可以工作了。@Quentin说真的,你把Object.keys(friends)[i]
放在循环中,每次迭代调用Object.keys
?!非常感谢您这么快的回复。这是可行的,但Aba的代码行数较少。不过,再次感谢你。我仍在学习这一点,因此看到多个解决方案来解决同一个问题是非常有帮助的。非常感谢您如此快速地做出响应。这是可行的,但Aba的代码行数较少。不过,再次感谢你。我仍在学习这一点,因此看到多个解决方案来解决同一个问题是非常有帮助的。我建议您使用for。。在
中,哪种方法实际上是正确的,但您会因为hubris@Aba,