5

我对 Javascript 和 Json 真的很陌生,需要以下帮助。这是一些json数据:

"genres": [

 {
    "id": 28,
    "name": "Action"
 },
 {
    "id": 18,
    "name": "Drama"
 },
 {
    "id": 14,
    "name": "Fantasy"
 },
 {
    "id": 36,
    "name": "History"
 }

],

现在我想输出所有类型的名称

我正在使用 jquery mobile 和 ajax 来检索 json 数据。在我的函数内部,它看起来像这样:

var genres = results.genres[0].name;
$('#tmdbInfo2').html('<br>Genres: ' +genres);

在这个例子中,我们将展示流派的第一个元素(动作),但不是全部。输出应该是:动作、戏剧、幻想、历史。有时流派的元素数量会有所不同。

请帮助我,这对我来说很困惑 O_o

4

4 回答 4

8

纯Javascript

这就是您使用循环迭代数组元素的方式for(如果您受到诱惑,请不要for...in在数组上使用循环)。

for (var i = 0; i < results.genres.length; i++) {
    console.log( results.genres[i].name );
}

你的数组results.genres在这里被调用。在循环内部,results.genres[i]将始终引用当前元素。

jQuery

我看到你正在使用 jQuery,所以你也可以$.each()这样使用:

$.each(results.genres, function (currentIndex, currentElem) {
    console.log( currentElem.name );
});
于 2012-12-01T10:36:28.943 回答
4

另一种迭代方式:

results.genres.forEach(function(genre) {
    console.log(genre.name);
});

对于您要执行的操作:

$('#tmdbInfo2').html(
    'Genres: ' + results.genres.map(function(genre) {
        return genre.name;
    }).join(', ')
);
于 2012-12-01T10:37:42.073 回答
1

您可以使用这样的 for-in 循环访问数组值:

var result = "";

for (i in genres.name) {
  result += genres.name[i];
} 

console.log(result);
于 2019-01-07T07:06:49.520 回答
0

您可以使用

<script>
   results = '{ "genres": [{ "id": 28, "name": "Action" },{ "id": 18, "name": "Drama" },{ "id": 14, "name": "Fantasy" },{ "id": 36, "name": "History" }] }';    
   results = JSON.parse(results);

       for($i in results.genres){
            console.log(results.genres[$i].name);
       }

</script>

JSON.parse方法将字符串解析为 JSON,可选择转换解析产生的值,您可以像数组一样从节点获取值。当您使用时,您for($i in results.genres)不会设置限制大小,'获取所有数组/对象元素的情况。

组元素需要介于{ "genres": [{ ...}] }之间,以便您的 JSON 被读取。

于 2015-06-15T11:56:57.097 回答