将多个CSV文件合并为一个2D阵列



我想使用jquery循环将多个CSV文件组合成一个2D数组。

    function drawChart(){
    
    filename="/projectUCF/SN00.csv";
    $.get(filename, function(csvString){
      var arrayData1 = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});
      var removeRows = 1;
      while (removeRows--) {
        arrayData1.shift();
      }
      filename="/projectUCF/SN01.csv";
      $.get(filename, function(csvString){
      var arrayData2 = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar});
      var removeRows = 2;
      while (removeRows--) {
        arrayData2.shift();
      }
     
     var arrayData=[...arrayData1,...arrayData2];
     console.log(arrayData);
     var data = new google.visualization.arrayToDataTable(arrayData);
      
      var view = new google.visualization.DataView(data);
      view.setColumns([1,5]);
      
      
      var options = {
          title: "Battery State of Charge (7 days)",
          hAxis: {format: 'M/d hh:mm'},
          vAxis: {title: "Charge Level (in Percentage)", minValue:0, maxValue:100},
      legend: 'none'
      };
     chart.draw(view,options);  
     }); 
     });
     }

我想使用一个循环,而不是多次使用$.get。我是新来的,所以任何帮助都很感激。

实现这一点的一种方法是使用Promise.all。它接受一组promise,并在所有promise都已解决时调用一个回调。因此,您可以像这样重组代码的检索/解析部分:

var filenames = ["/projectUCF/SN00.csv", "/projectUCF/SN01.csv"];
var promises = [];
// create array of promises, one per file, that resolve after the file is retrieved a resolve with the parsed data
filenames.forEach(function (filename) {
    promises.push(new Promise(function (resolve, reject) {
        $.get(filename, function (csvString) {
            var fileData = $.csv.toArrays(csvString, { onParseValue: $.csv.hooks.castToScalar });
            var removeRows = 1;
            while (removeRows--) {
                fileData.shift();
            }
            resolve(fileData);
        });
    }));
});
// wait until all files have been retrieved, then continue
Promise.all(promises).then(function (results) {
    var arrayData = [];
    results.forEach(function (fileData) {
        arrayData.push(...fileData);
    });
    // remaining code goes here
});

相关内容

  • 没有找到相关文章

最新更新