【问题标题】:Making 2 dimensoinal array from csv从csv制作二维数组
【发布时间】:2016-10-10 11:31:26
【问题描述】:

这是我的 csv,

Nejvíce za měsíc;;
1.;Jack;900
2.;George;850
3.;Martin;800
4.;John;700
5.;Martin;701

在我的代码中,我从保管箱加载它

$.ajax({
  url: 'https://dl.dropboxusercontent.com/s/11ofmbg4d4y3gb0/Top.csv',
  dataType: 'text',
}).done(successFunction);

我的代码只创建一维数组。

function successFunction(data) {

  var promenna = data.split(";");
  console.log(promenna);

}

我想从中创建数组,它应该是这样的。我该怎么做?

var promenna = [
  ["Nejvíce za měsíc", "900"],
  ["Jack", "900"],
  ["George", "850"],
  ["Martin", "800"],
  ["John", "700"],
  ["Martin", "701"],
];

【问题讨论】:

    标签: javascript arrays csv


    【解决方案1】:

    对您的代码及其工作进行少许修正。您可以在浏览器控制台中试一试;

    $.ajax({
        url: 'https://dl.dropboxusercontent.com/s/11ofmbg4d4y3gb0/Top.csv',
        dataType: 'text',
    }).done(successFunction);
    
    function successFunction(data) {
        var promenna = data.split(";"),
            tempArr = [],
            len = promenna.length;
        for (let i = 0; i <= len; i += 2) {
            tempArr.push([promenna[i], promenna[i+1]]);
        }
        console.log(tempArr);
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用这样的东西:

      var data = "1.;Jack;900\n" + 
                 "2.;George;850\n" +
                 "3.;Martin;800";
      
      var promenna = data.replace(/\n/g,";").split(";");
      var result = [];
      console.log(promenna);
      for(var i = 0; i < promenna.length; i+=3) {
          var line = [];
          line.push(promenna[i+1]);
          line.push(promenna[i+2]);
          result.push(line);
      }
      
      console.log(result);
      

      JsFiddle

      【讨论】:

      • 谢谢,正是我想要的。但是如果我有不同的数据,我找不到。如果我想创建 5 维层怎么办,如果 2 怎么办?
      • @Ostrov 不确定我理解你想要什么,但如果你想要一个类似的数组但有 5 个条目而不是 2 个,只需将 i+=3 更改为 i+=&lt;number of entry in your line&gt;,然后推送什么你想在行。 [i] 是第一个条目 ("1.","2.",...),[i+1] 第二个 ("Jack","George") 等等...
      • 可以说我会从 toAray aray 创建代码笔 codepen.io/anon/pen/VKXNvO
      • @Ostrov 是的,正如我所说,将 i+=3 更改为 i+=4(因为每行有 4 个条目),然后使用 line.push(promenna[i]), line.push([ i+1])... [i+2], [i+3]
      • 谢谢!我现在明白了。
      【解决方案3】:

      先声明一个数组,然后将结果推送到该数组中

      函数成功函数(数据){

              var finalArray = new Array();
              var promenna = data.split(";");
              finalArray.push(promenna);
              console.log(finalArray);
      
          }
      

      【讨论】:

        【解决方案4】:

        通过splice 加入结果数组。

        var arr = [
          'Nejvíce za měsíc',
          '',
          'Jack',
          900,
          'George',
          850,
          'Martin',
          800,
          'John',
          700,
          'Martin',
          701
        ];
        for (var i = 0; i < arr.length; i++) {
          arr[i] = [arr[i], arr.splice(i + 1, 1).pop()];
        }
        console.log(arr)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-11
          • 1970-01-01
          • 1970-01-01
          • 2014-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多