Javascript 数组Reduce为数据提供未定义的结果

Javascript 数组Reduce为数据提供未定义的结果,javascript,arrays,json,highcharts,axios,Javascript,Arrays,Json,Highcharts,Axios,我试图根据名称的唯一值来累积JSON值。但我一直得到未定义的数据 我的JSON: [ { "date": "2019-09-16", "browser": "Firefox", "hello": 487586, "bye": 398217 }, { "date": "2019-09-16", "browser": "Firefox", "hello": 2661

我试图根据名称的唯一值来累积JSON值。但我一直得到未定义的数据

我的JSON:

[
    {
        "date": "2019-09-16",
        "browser": "Firefox",
        "hello": 487586,
        "bye": 398217
    },
    {
        "date": "2019-09-16",
        "browser": "Firefox",
        "hello": 2661089,
        "bye": 2111027
    },
    {
        "date": "2019-09-16",
        "browser": "Chrome",
        "hello": 218492,
        "bye": 164685
    },
    {
        "date": "2019-09-16",
        "browser": "IE",
        "hello": 164572,
        "bye": 86309
    },
    {
        "date": "2019-09-16",
        "browser": "Chrome",
        "hello": 67534,
        "bye": 19736
    }
]
我的代码:

let json = `json_url`;
let Social_Media = ['Facebook', 'Instagram', 'Twitter', 'LinkedIn', 'TikTok'];

axios.get(json, {
        cancelToken: new CancelToken(function executor(c) {
          api_requests.json_count = c;
        })
      })
      .then(function(json_counts) {
        let json_chart_data = json_counts.data;

        let val = [...new Set(json_chart_data.map(({
          nm
        }) => nm))];
        console.log(val);

        series = val.reduce((a, c, i) => {
          console.log(a);
          cur_data = json_chart_data.filter(d => {
            return d.nm === c
          }).sort(compare_values('date'));

          return [...a, {
            name: c.replace(/_/g, ' '),
            data: cur_data.reduce((aa, cc) => {
              // console.log(aa);
              return [...aa, {
                x: +date(cc),
                y: +cc.hello,
                bye: +cc.bye
              }];
            }, []),
            Social: Social_Media[i]
          }];
        }, []);

val
返回
[“Firefox”、“Chrome”、“IE”]

我希望
console.log(a)
返回:

[]
[0:{data:[json_data for Firefox]}, name:"Firefox", Social_Media:"Facebook"}]
[0:{data:[json_data for Firefox]}, name:"Firefox", Social_Media:"Facebook"}, 1:{data:[json_data for Chrome]}, name:"Chrome", Social_Media:"Instagram"}]
...
我得到:

[]
[0:{data:undefined}, name:"Firefox", Social_Media:"Facebook"}]
[0:{data:undefined}, name:"Firefox", Social_Media:"Facebook"}, 1:{data:undefined}, name:"Chrome", Social_Media:"Instagram"}]

我做错了什么?我只想合并每种浏览器的所有结果。是因为我正在寻找独特的浏览器,然后使用reduce方法将它们组合起来吗

你从不在
reduce
内做任何事情。不知怎的,你们得到的结果表明并非如此。@VLAZ,我已经编辑了我的代码。我感觉你们在这里省略了一些细节。我在这段代码中看到的任何东西都不允许
数据
被分配
未定义
。不过,您可能在混合对象和数组时做了一些奇怪的事情。什么是
a
?它是数组还是对象?您正在控制台记录
a.data
,但随后将
a
分散到一个数组中。@Jacob,我唯一忽略的是图表的构建。这超出了reduce方法。那是我的错。console.log(a)是我上面期望的结果,我认为它应该是
val.filter(d=>{return d===c
或更简单的
val.filter(d=>d==c)
,即使有这个问题,您的数据也应该是
[]
而不是
未定义的。