【问题标题】:Update json array values in javascript在 javascript 中更新 json 数组值
【发布时间】:2020-09-22 12:29:52
【问题描述】:

我正在使用 highchart 绘制图表,但日期未正确显示在 x 轴上,因此我需要解析来自 json 响应的日期。我试图操纵 json 日期,但没有达到预期。

This is my current json response

"linechart":[{
                "name":"Average Conversation Length (In minutes)",
                "data":[["2020,02,12",12],["2020,02,13",13]]
            },{
                 "name":"Average Number of Conversations",
                 "data":[["2020,02,12",10],["2020,02,13",21]]
            }]

这是我的预期输出

linechart: [{name: "Average Conversation Length (In minutes)",
            data: [[Date.UTC(2020, 02, 12), 12],[Date.UTC(2020, 02, 13), 13]]},
            {name: "Average Number of Conversations",
            data: [[Date.UTC(2020, 02, 12), 10],[Date.UTC(2020, 02, 13), 21]]}],

这是我尝试过的

    var arr1 = [];
var data = chartdata.linechart
for (var i = 0; i < data.length; i++){
    var obj = data[i];
    for (var key in obj){
      var value = obj[key];
      for (var value2 in value){
        var values = value[value2];
        arr1.push(Date.parse(values));
      }
    }
  }

【问题讨论】:

    标签: javascript json highcharts


    【解决方案1】:
    var data = chartdata.linechart;
    for (var i = 0; i < data.length; i++) {
      var obj = data[i];
      obj.data.forEach(d => {
        d[0] = Date.parse(d[0]);
      });
    }
    
    console.log(data);
    

    【讨论】:

      【解决方案2】:

      您可以简单地map 覆盖元素:

      let linechart = [
        {
          "name":"Average Conversation Length (In minutes)",
          "data":[["2020,02,12",12],["2020,02,13",13]]
      },{
          "name":"Average Number of Conversations",
          "data":[["2020,02,12",10],["2020,02,13",21]]
      }]
      
      const res = linechart.map(o => {
          return {name: o.name, data: o.data.map( ([d,n]) => {
              return [Date.parse(d), n]
          })}
      })
      
      console.log(res)

      【讨论】:

        【解决方案3】:

        你也可以试试这个方法:

        let jsonData = [{
          "name": "Average Conversation Length (In minutes)",
          "data": [
            ["2020,02,12", 12],
            ["2020,02,13", 13]
          ]
        }, {
          "name": "Average Number of Conversations",
          "data": [
            ["2020,02,12", 10],
            ["2020,02,13", 21]
          ]
        }];
        
        jsonData.forEach(item => {
            item.data.forEach(data => {
                let date = data[0].split(',');
                
                data[0] = Date.UTC(date[0], date[1], date[2])
            })
        })
        

        https://jsfiddle.net/BlackLabel/ucx6ojL2/

        【讨论】:

          猜你喜欢
          • 2022-01-04
          • 1970-01-01
          • 2022-08-17
          • 1970-01-01
          • 2022-11-26
          • 2017-09-19
          • 2022-10-20
          • 2021-10-31
          • 1970-01-01
          相关资源
          最近更新 更多