Javascript 如何从JSON数组中获取值?
如何从arrayfriends获取“蒸汽ID”Javascript 如何从JSON数组中获取值?,javascript,arrays,json,key-value-store,Javascript,Arrays,Json,Key Value Store,如何从arrayfriends获取“蒸汽ID” 我做错了什么? 朋友列表和朋友真把我弄糊涂了。 var obj= { “友谊列表”:{ “朋友”:[ { “蒸汽ID”:“76561197965254644”, “关系”:“朋友”, “自那时起的朋友”:1427418915 }, { “蒸汽ID”:“76561197967483523”, “关系”:“朋友”, “自那时起的朋友”:1483547216 }, { “蒸汽ID”:“76561197967658405”, “关系”:“朋友”, “自那时
我做错了什么?
朋友列表和朋友真把我弄糊涂了。
var obj=
{
“友谊列表”:{
“朋友”:[
{
“蒸汽ID”:“76561197965254644”,
“关系”:“朋友”,
“自那时起的朋友”:1427418915
},
{
“蒸汽ID”:“76561197967483523”,
“关系”:“朋友”,
“自那时起的朋友”:1483547216
},
{
“蒸汽ID”:“76561197967658405”,
“关系”:“朋友”,
“自那时起的朋友”:1431204923
}
]
}
}
对于(变量i=0;i
var obj=
{
“友谊列表”:{
“朋友”:[
{
“蒸汽ID”:“76561197965254644”,
“关系”:“朋友”,
“自那时起的朋友”:1427418915
},
{
“蒸汽ID”:“76561197967483523”,
“关系”:“朋友”,
“自那时起的朋友”:1483547216
},
{
“蒸汽ID”:“76561197967658405”,
“关系”:“朋友”,
“自那时起的朋友”:1431204923
}
]
}
}
obj.friendslist.friends.forEach((i)=>{
控制台日志(i.streamid);
})
获取好友列表对象,然后获取好友数组/列表并对其进行迭代。
对于其中的每个对象,打印steamid或对象中的任何内容
for (var i = 0; i < obj.friendslist.friends.length ; i++) {
console.log(obj.friendslist.friends[i].steamid );
}
for(变量i=0;i
您需要首先访问nested friends属性,然后通过它进行编辑
var friends = obj.friendslist.friends;
for (var i = 0; i < friends.length; i++) {
console.log(friends[i]['steamid']);
}
var friends=obj.friendslist.friends;
for(var i=0;i
正如您在对我的回答的评论中要求解释的那样
您有一个JSON对象,该对象包含某些属性,这些属性可能是另一个对象,字符串
/数字
/日期
或数组
。因此,要访问对象内部的属性,首先必须通过以下方式直接访问其子对象
obj.friendslist
或
您在好友列表
中有另一个孩子,因此您必须通过以下方式访问它:
obj.friendslist.friends
现在您的friends
属性持有一个数组,您可以使用for循环对其进行迭代
for (var i = 0; i < obj.friendslist.friends.length; i++) {
console.log(obj.friendslist.friends[i]['steamid']);
}
for(变量i=0;i
使用数组方法迭代对象数组以获取特定的键值
map()
工作演示:
var obj=
{
“友谊列表”:{
“朋友”:[
{
“蒸汽ID”:“76561197965254644”,
“关系”:“朋友”,
“自那时起的朋友”:1427418915
},
{
“蒸汽ID”:“76561197967483523”,
“关系”:“朋友”,
“自那时起的朋友”:1483547216
},
{
“蒸汽ID”:“76561197967658405”,
“关系”:“朋友”,
“自那时起的朋友”:1431204923
}
]
}
};
var newObj=obj.friendslist.friends.map(函数(项){
return item.streamid;
});
console.log(newObj)
您拥有的是一个对象
,具有好友列表
属性。
该属性也是一个对象
,只有一个属性,朋友
friends
是对象的数组
这些对象具有您感兴趣的属性steamid
但是,您的代码尝试直接迭代obj
,而不是friendslist
属性。这是因为访问属性的方式与访问数组元素的方式相同:
obj.property === obj['property']
因此,您正在尝试访问obj
的属性0
。如您所见,它不存在,并返回未定义的
您需要迭代friendslist
属性:
for (var i = 0; i < obj.length; i++) {
console.log(
obj. //The base object
friendslist. //The friendslist property
friends[i]. //The friends property, iterated
steamid //Get the steamid
);
}
for(变量i=0;i
备选方案可以在obj.friendslist.friends
上使用map
或forEach
的Array
方法,也可以写成obj['friendslist']['friends']
您可能想了解javascript中数组
和对象
之间的相似性,以及它们各自的方法。MDN是一个很好的地方,但是任何文档都应该足够了。obj.friendslist.friends[0]。steamidobj
不是一个可以使用进行迭代的数组。它是一个物体friends
是一个数组。@KD Wow谢谢正在运行,但您能解释一下为什么会运行吗?@ShadowGR请找到我的答案和您的问题的答案。谢谢!谢谢你,现在在我的脑海里有了意义@乔希德,只有密码的答案不是很有用。试着扩展一下你的答案。你是对的,但很明显,我认为这是不言自明的。虽然这个代码片段可以解决这个问题,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。.forEach比简单的for循环好?谢谢@bahrep,进行了必要的更改。这实际上是我的第一篇博文,我还是个新手,我想我可以用newObj.push(obj.friendslist.friends.steamid)来实现这一点,或者最好用map?map会迭代数组的每个元素。您的newObj.push(obj.friendslist.friends.streamid)不会这样做..而map是迭代数组而不是for循环的更好方法。
for (var i = 0; i < obj.length; i++) {
console.log(
obj. //The base object
friendslist. //The friendslist property
friends[i]. //The friends property, iterated
steamid //Get the steamid
);
}