Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示不同的json流派名称(以及每个流派类型的总数)?_Javascript_Jquery_Json_Distinct - Fatal编程技术网

Javascript 如何显示不同的json流派名称(以及每个流派类型的总数)?

Javascript 如何显示不同的json流派名称(以及每个流派类型的总数)?,javascript,jquery,json,distinct,Javascript,Jquery,Json,Distinct,我有这样的JSON数据结构 { "resp": [{ "genreID": 1, "genre": "All TV Series", "length": "3.5", "name": "Passion", "vid": 12345, }, { "genreID": 1, "genre": "All TV Series", "length": "1.9"

我有这样的JSON数据结构

{
    "resp": [{
        "genreID": 1,
        "genre": "All TV Series",
        "length": "3.5",
        "name": "Passion",
        "vid": 12345,

    }, {
        "genreID": 1,
        "genre": "All TV Series",
        "length": "1.9",
        "name": "Galaxy",
        "vid": 12346,


    }, {
        "genreID": 1,
        "genre": "All TV Series",
        "length": "1.4",
        "name": "Sun",
        "vid": 12347,


    }, {
        "genreID": 8,
        "genre": "Thriller",
        "length": "15.1",
        "name": "Moonlight ",
        "vid": 12348,


    }, {
        "genreID": 8,
        "genre": "Thriller",
        "length": "10.6",
        "name": "Sunlight",
        "vid": 12349,


    }]
}
我想从上面的json数据创建以下超链接,一旦我们点击每个流派名称超链接,它应该只显示该流派的数据。现在,我的代码使用下面的代码在列表中显示整个json

要创建以下超链接:

All TV Series(3)
Thriller(2)
如何使用Javascript/jQuery实现这一点?很遗憾,我无法编辑服务器发送给我的内容

代码:

试着跟随

var obj={ 响应:[{ 根里德:1, 类型:所有电视连续剧, 长度:3.5, 名称:激情, 视频:12345, }, { 根里德:1, 类型:所有电视连续剧, 长度:1.9, 名称:银河, 视频:12346, }, { 根里德:1, 类型:所有电视连续剧, 长度:1.4, 姓名:孙, 视频:12347, }, { genreID:8, 类型:惊悚片, 长度:15.1, 名称:月光, 视频:12348, }, { genreID:8, 类型:惊悚片, 长度:10.6, 名称:阳光, 视频:12349, }] }; var响应={}; 对象对应的forEachfunctionitem{ 响应[项目.流派]=响应[项目.流派]| 0; 响应[项目类型]++; };
console.logresponse 假设返回的数据驻留在一个名为data的变量中

然后进行另一次迭代以生成链接:

es6 es5
谢谢你的回复。我曾尝试在ajax中使用您的代码,但我不断发现错误;之前,让data2=data.resp!如何修复它?我仍然得到这个==>错误丢失;before语句let model={};这很奇怪,因为它不应该出错。我已经做了一个小的编辑,请再次检查@user1788736我已经更新了代码,这样您就可以享受这两个功能了,现在您将获得正确的输出。因为它偏离了原始问题-我将我们转移到单独的聊天室。如果有帮助,请批准答案。如何将这些值打印为超链接标题?
success: function(data) {

   self.itemParts = data.resp;

    for (var i = 0; i < self.itemParts.length; i++) 
    {


       // create HTML code
       var div = "<div class=\"image\">\n" + 
       "<a href=\"javascript:loadList('" + self.itemParts[i].vid+ "')\">\n" +
       "<img src=\"http://somesite.com/images/l"+ self.itemParts[i].vid +".png\" alt=\"..\" />"+ self.itemParts[i].name+"\n" +
       "</a>\n" +
       "</div>\n";
       // append it inside <body> tag.
       $("#myDiv").append(div);

    }


<div id='myDiv' style="display: visiable;">  

</div>
let data = {
    "resp": [{
        "genreID": 1,
        "genre": "All TV Series",
        "length": "3.5",
        "name": "Passion",
        "vid": 12345,

    }, {
        "genreID": 1,
        "genre": "All TV Series",
        "length": "1.9",
        "name": "Galaxy",
        "vid": 12346,


    }, {
        "genreID": 1,
        "genre": "All TV Series",
        "length": "1.4",
        "name": "Sun",
        "vid": 12347,


    }, {
        "genreID": 8,
        "genre": "Thriller",
        "length": "15.1",
        "name": "Moonlight ",
        "vid": 12348,


    }, {
        "genreID": 8,
        "genre": "Thriller",
        "length": "10.6",
        "name": "Sunlight",
        "vid": 12349,


    }]
};

let model = {};
let values = data.resp;
values.forEach(function(value) {
  //creating separate groups for each type
  model[value.genre] = model[value.genre] || [];
  model[value.genre].push(value);
});
for(let genre in model) {
  $("#myDiv").append(`<a href="#">${genre}(${model[genre].length})</a>`); 
}
for(let genre in model) {
  $("#myDiv").append('<a href="#">'+genre+'('+model[genre].length+')</a>'); 
}