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

时间:2017-01-25 10:48:37

标签: javascript arrays json key-value-store

我该如何采取" steamid "来自阵列朋友
我做错了什么? 好友列表朋友让我很困惑。



var obj = 
{
	"friendslist": {
		"friends": [
			{
				"steamid": "76561197965254644",
				"relationship": "friend",
				"friend_since": 1427418915
			},
			{
				"steamid": "76561197967483523",
				"relationship": "friend",
				"friend_since": 1483547216
			},
			{
				"steamid": "76561197967658405",
				"relationship": "friend",
				"friend_since": 1431204923
			}
      ]
	}
}
for (var i = 0; i < obj.length; i++) {
  console.log(obj[i].friends['steamid']);
   
}
&#13;
&#13;
&#13;

6 个答案:

答案 0 :(得分:3)

&#13;
&#13;
 var obj = 
    {
    	"friendslist": {
    		"friends": [
    			{
    				"steamid": "76561197965254644",
    				"relationship": "friend",
    				"friend_since": 1427418915
    			},
    			{
    				"steamid": "76561197967483523",
    				"relationship": "friend",
    				"friend_since": 1483547216
    			},
    			{
    				"steamid": "76561197967658405",
    				"relationship": "friend",
    				"friend_since": 1431204923
    			}
          ]
    	}
    }
    obj.friendslist.friends.forEach((i) => {
      console.log(i.steamid);
    })
&#13;
&#13;
&#13;

obj.friendslist.friends返回数组,然后可以循环。数组中的每个值都是一个对象,您需要的属性是steamid。

答案 1 :(得分:1)

正如您在评论中要求解释我的答案......

您有一个JSON对象,其中包含某些属性,这些属性可能是另一个对象,String / Number / DateArray。因此,要访问对象内的属性,您必须首先通过以下方式直接访问其子项。

obj.friendslist

OR

obj["friendslist"]

您在friendslist内有另一个孩子,因此您必须按以下方式访问它:

obj.friendslist.friends

现在您的friends属性包含一个数组,您可以使用for loop

进行迭代
for (var i = 0; i < obj.friendslist.friends.length; i++) {
  console.log(obj.friendslist.friends[i]['steamid']);

}

答案 2 :(得分:0)

获取friendlist对象,然后获取朋友数组/列表并迭代它。 对于其中的每个对象,打印steamid或对象中的任何内容。

 for (var i = 0; i < obj.friendslist.friends.length ; i++) {
      console.log(obj.friendslist.friends[i].steamid );
 }

答案 3 :(得分:0)

首先需要访问嵌套的朋友属性,然后通过它进行迭代。

var friends = obj.friendslist.friends;

for (var i = 0; i < friends.length; i++) {
   console.log(friends[i]['steamid']);
}

答案 4 :(得分:0)

使用Array map()方法迭代对象数组以获取特定键值。

map()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。

工作演示:

&#13;
&#13;
var obj = 
{
	"friendslist": {
		"friends": [
			{
				"steamid": "76561197965254644",
				"relationship": "friend",
				"friend_since": 1427418915
			},
			{
				"steamid": "76561197967483523",
				"relationship": "friend",
				"friend_since": 1483547216
			},
			{
				"steamid": "76561197967658405",
				"relationship": "friend",
				"friend_since": 1431204923
			}
      ]
	}
};

var newObj = obj.friendslist.friends.map(function(item) {
    return item.steamid;
});

console.log(newObj);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

您所拥有的是Object,具有friendslist属性。 该属性也是Object,只有一个属性friends friendsArray的{​​{1}} Thoses对象具有您感兴趣的属性Object

但是,您的代码会尝试直接迭代steamid,而不是obj属性。这项工作是因为访问属性可以像访问数组元素一样完成:

friendslist

因此,您尝试访问obj.property === obj['property'] 的{​​{1}}媒体资源。如您所见,它不存在,并返回0

你想要的是迭代obj属性:

undefined

备选方案可以在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 ); } 的通用mapforEach方法,也可以写为Array

您可能希望了解javascript中obj.friendslist.friendsobj['friendslist']['friends']之间的相似之处及其各自的方法。 MDN是一个很好的地方,但任何文档都应该足够了。