Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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_Json - Fatal编程技术网

Javascript 从JSON创建包含字符串和整数的数组

Javascript 从JSON创建包含字符串和整数的数组,javascript,json,Javascript,Json,目前,我有以下JSON提要: var data = { "feeds": { "regions": [{ "name": "Lichtenberg", "id": "01408.b", "suburbs": [{ "name": "Fennpfuhl", "views": 76400 }, { "name": "Lichten

目前,我有以下JSON提要:

var data = {
  "feeds": {
    "regions": [{
        "name": "Lichtenberg",
        "id": "01408.b",
        "suburbs": [{
            "name": "Fennpfuhl",
            "views": 76400
          },
          {
            "name": "Lichtenberg",
            "views": 87895
          },
          {
            "name": "Rummelsberg",
            "views": 10239
          }
        ]
      },
      {
        "name": "Mitte",
        "id": "03442.f",
        "suburbs": [{
            "name": "Tiergarten",
            "views": 82695
          },
          {
            "name": "Mitte",
            "views": 67234
          },
          {
            "name": "Hansaviertel",
            "views": 10848
          },
          {
            "name": "Moabit",
            "views": 67500
          }
        ]
      },
      {
        "name": "Friedrichshain-Kreuzberg",
        "id": "01991.o",
        "suburbs": [{
            "name": "Friedrichshain",
            "views": "98494"
          },
          {
            "name": "Kreuzberg",
            "views": "27800"
          }
        ]
      },
      {
        "name": "Templehof-Schöneberg",
        "id": "01778.k",
        "suburbs": [{
            "name": "Friedenau",
            "views": 76595
          },
          {
            "name": "Schöneberg",
            "views": 20731
          },
          {
            "name": "Templehof",
            "views": 58000
          },
          {
            "name": "Mariendorf",
            "views": 32300
          }
        ]
      },
      {
        "name": "Pankow",
        "id": "02761.q",
        "suburbs": [{
            "name": "Wießensee",
            "views": 81294
          },
          {
            "name": "Prenzlauer Berg",
            "views": 76470
          },
          {
            "name": "Pankow",
            "views": 90210
          }
        ]
      }
    ],
  }
};
实际上,我想做两件事:

  • 循环遍历区域以获得4个名称
  • 循环遍历每个区域中的所有视图,将它们相加,并将它们作为4个名称下的值返回 下面是我刚刚快速输入的输出示例:

    var viewsPerRegion = 
    
     [{
      label: "Litchtenberg",
      total: 174534
    }, {
      label: "Mitte",
      total: 228277
    }, {
      label: "Friedrichshain-Kreuzberg",
      total:  126294
    }, {
      label: "Templehof-Schöneberg",
      total: 187626
    }]; 
    etc...
    
    我需要注意的是,data.feeds.region[2].subpures.views存储为字符串,因此我需要先将其更改为整数

    无论如何,到目前为止,我的解决方案(实际上不起作用)如下:

    var viewsPerRegion, i, j, x;  
    
    for (i in data.feeds.regions) {
      x += data.feeds.regions[i].name;
      for (j in data.feeds.regions[i].suburbs.views){
        x += data.feeds.regions[i].suburbs.views[j];
      }
    }
    
    viewsPerRegion = x;
    

    我们当然非常感谢您的任何帮助,这对JSON和javascript来说是个新手

    您可以
    映射
    区域数组,从每个区域中提取
    名称
    ,并通过使用
    reduce
    将每个
    视图相加,获得
    总数

    const data={“feed”:{“regions”:[{“name”:“Lichtenberg”,“id”:“01408.b”,“suburbies”:[{“name”:“Fennpfuhl”,“views”:76400},{“name”:“Lichtenberg”,“views”:87895},{“name”:“Rummelsberg”,“views”:10239},{“name”:“Mitte”,“id”:“03442.f”,“suburbiurs”:[{“name”:“tiergan”,“views”:82695},{“name”:“mitt”,“views”:67234},{“name”:“Mitte”,“views”:10848}{“姓名”:“摩比特”、“观点”:“67500”}、{“姓名”:“弗里德里希肖恩·克鲁兹堡”、“身份证”:“01991.o”、“郊区”:[{“姓名”:“弗里德里希肖恩”、“观点”:“98494”}、{“姓名”:“克鲁兹堡”、“观点”:“27800”}、{“姓名”:“坦普尔霍夫·舍内伯格”、“身份证”:“01778.k”、“郊区”:[{“姓名”:“弗里德瑙”、“观点”:76595}、{“姓名”:“舍内伯格”、“观点”:20731}、{“姓名”:“坦普尔霍夫·舍内伯格”、“观点”:“58000”{Mariendorf,“视图”:32300},{“名称”:“Pankow”,“id”:“02761.q”,“郊区”:[{“名称”:“Wießensee”,“视图”:81294},{“名称”:“Prenzlauer Berg”,“视图”:76470},{“名称”:“Pankow”,“视图”:90210},},}
    const viewsPerRegion=data.feeds.regions.map({name,subsection})=>({
    标签:名称,
    总计:郊区.reduce((a,{views})=>a+Number(视图),0)
    }));
    
    console.log(viewsPerRegion);
    谢谢!这当然有效!!我看到你使用
    map
    reduce
    而不是
    来进行in
    循环。在这种情况下,我的方法是完全错误的吗?数组方法比
    用于
    循环功能更强大,问题通常更少。例如,你的
    用于(i
    创建了一个全局
    i
    ,与(j
    )的
    一样-但是如果使用数组方法,所有内容都将封装为一个参数(并且您不必多次重复
    data.feeds.regions[i]
    代码字符串)。您在使用它之前也没有声明
    x
    ,这将导致一些奇怪的字符串,看起来像
    未定义的7640087895
    等等。