Вернуть все значения массива в json
У меня есть 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);
}
Любая идея?
5 ответов
Решение
Если я хорошо понимаю, вы можете использовать
Loop:
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 стрелка функции:var tags = posts.map(post => post.tag);
Вы можете попробовать использовать цикл 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]);
}
}
Приветствия.
Вот код:
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);
Попробуй это,
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);
В вашем for (var tag in posts[i].tags)
петли, tag
содержит ключи, а не значения.
Таким образом, быстрое решение будет:
for (var tag in posts[i].tags) {
tags.push(posts[i].tags[tag]);
}
Но, как указал Ориол, for..in
Циклы предназначены для перебора свойств объекта, а не массивов.
Просто используйте for
петля, как ваш первый.