我该如何采取" 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;
答案 0 :(得分:3)
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;
obj.friendslist.friends
返回数组,然后可以循环。数组中的每个值都是一个对象,您需要的属性是steamid。
答案 1 :(得分:1)
正如您在评论中要求解释我的答案......
您有一个JSON对象,其中包含某些属性,这些属性可能是另一个对象,String
/ Number
/ Date
或Array
。因此,要访问对象内的属性,您必须首先通过以下方式直接访问其子项。
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()
方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。
工作演示:
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;
答案 5 :(得分:0)
您所拥有的是Object
,具有friendslist
属性。
该属性也是Object
,只有一个属性friends
friends
是Array
的{{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
);
}
的通用map
或forEach
方法,也可以写为Array
。
您可能希望了解javascript中obj.friendslist.friends
和obj['friendslist']['friends']
之间的相似之处及其各自的方法。 MDN是一个很好的地方,但任何文档都应该足够了。