【问题标题】:How to merge data from list Javascript如何合并列表Javascript中的数据
【发布时间】:2017-01-20 06:25:03
【问题描述】:

我有一个这样的列表:

serie_chart = [ { “名称”:“酒窖”,“数据”:[ 1484617495839, 23 ] },{ “名称”:“Otro”,“数据”:[1484617703695, 30] },{“名称”:“Camara1”, “数据”:[1484622282856,22]},{“名称”:“Camara1”,“数据”:[ 1484622286969, 24 ] }, { "名称":"Camara1", "数据":[ 1484622289794, 26 ] }];

我想像这样使用重复的名称合并这些数据并将数据存储到一个列表中

[ { "名称":"酒窖", “数据”:[ 1484617495839, 23 ] }, { “名称”:“奥特罗”, “数据”:[ [ 1484617703695, 30 ], [ 1484617998559, 33 ] ] }, { "name":"Camara1", “数据”:[ [ 1484622282856, 22 ], [ 1484622286969, 24 ], [ 1484622289794, 26 ], [ 1484677105646, 55 ] ] } ]

我创建了这段代码,

 var temp = {};
 for (var i=0; i<serie_chart.length; i++) {
     temp[serie_chart[i].name] =
     temp[serie_chart[i].name] === undefined ?
     serie_chart[i].data : [temp[serie_chart[i].name],serie_chart[i].data];
 }
   serie_chart = [];
      for (var key in temp) {
          serie_chart.push({'name': key, 'data': temp[key]})
      }

但我不知道我错过了什么,因为当我尝试推送它时,他在数据中创建了很多列表。感谢您的帮助

【问题讨论】:

    标签: javascript arrays list


    【解决方案1】:

    试试这个:

    var temp = {};
    for (var i=0; i<serie_chart.length; i++) {
        if(!temp[serie_chart[i].name]) {
         temp[serie_chart[i].name]=[];
        }
        temp[serie_chart[i].name].push(serie_chart[i].data);
    }
    serie_chart = [];
    for (var key in temp) {
        serie_chart.push({'name': key, 'data': temp[key]})
    }
    

    【讨论】:

      【解决方案2】:

      这是 Muhridin Ibragimov 的答案,具有增强的性能,我们对数组进行了一次迭代:

      var temp = {};
      var result = [];
      for (var i=0; i<serie_chart.length; i++) {
          var chart = serie_chart[i]
          var name = chart.name
          if(!temp[name]) {
           temp[name]=[];
           result.push({'name': name, 'data': temp[name]})
          }
          temp[name].push(chart.data);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-05
        • 2011-04-28
        • 2017-01-30
        • 2023-02-18
        • 1970-01-01
        • 2020-05-30
        • 2020-02-21
        • 1970-01-01
        相关资源
        最近更新 更多