Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从JSON数组中获取值?_Javascript_Arrays_Json_Key Value Store - Fatal编程技术网

Javascript 如何从JSON数组中获取值?

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”, “关系”:“朋友”, “自那时

如何从arrayfriends获取“蒸汽ID
我做错了什么?
朋友列表朋友真把我弄糊涂了。
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]。steamid
obj
不是一个可以使用
进行迭代的数组。它是一个物体
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
    );
}