我有一个json,所有帖子都是我的博客,我想要返回“tags”数组的所有值。所以,请参阅下面的json示例:
"posts":[
{
"id":"89319077059",
"title":"Post Title 01",
"tags":[
"Politcs",
"Science",
]
},
{
"id":"89318918989",
"title":"Post Title 02",
"tags":[
"Football",
"Soccer",
]
},
]
因此,我需要在循环中获取唯一的标记值,例如:
for (var i = 0; i < posts.length; i++) {
console.info("Here [i = 0] should be show the Politcs and Science and after [i = 1] show Football and Soccer");
}
我尝试创建另一个循环来搜索标签并使用标签[1],标签[2]等但不起作用。
var tags = [];
for (var tag in posts[i].tags) {
tags.push(tag);
}
有什么想法吗?
答案 0 :(得分:1)
如果我理解得很好,你可以使用
循环:
var tags = [];
for (var i = 0; i < posts.length; ++i) {
tags.push(posts[i].tags);
}
ES5 map
:
var tags = posts.map(function(post){
return post.tags;
});
ES5 map
+ ES6 arrow functions:
var tags = posts.map(post => post.tag);
答案 1 :(得分:1)
这是代码:
var posts = [
{
"id":"89319077059",
"title":"Post Title 01",
"tags":[
"Politcs",
"Science",
]
},
{
"id":"89318918989",
"title":"Post Title 02",
"tags":[
"Football",
"Soccer",
]
}
];
var tags = [];
for (var index in posts) {
var tagsArray = posts[index].tags;
tags.push(tagsArray);
}
console.log(tags);
<强> Jsbin 强>
答案 2 :(得分:1)
在for (var tag in posts[i].tags)
循环中,tag
包含密钥,而不是值。
所以快速解决方法是:
for (var tag in posts[i].tags) {
tags.push(posts[i].tags[tag]);
}
但是正如Oriol指出的那样,for..in
循环意味着迭代对象属性,而不是数组。
只需像第一个一样使用for
循环。
答案 3 :(得分:1)
试试这个,
var posts = {"posts":[
{
"id":"89319077059",
"title":"Post Title 01",
"tags":[
"Politcs",
"Science",
]
},
{
"id":"89318918989",
"title":"Post Title 02",
"tags":[
"Football",
"Soccer",
]
},
]};
var tags = [];
for(var i=0;i<posts.posts.length;i++) {
for(var j=0;j<posts.posts[i].tags.length;j++) {
tags.push(posts.posts[i].tags[j]);
}
}
console.log(tags);
答案 4 :(得分:1)
您可以尝试使用for循环:
for (var i = 0; i < posts.length; i++) {
for(var j = 0; j < posts[i].tags.length; j++) {
console.log(posts[i].tags[j]);
}
}
干杯。