格式化csv文件中的字符串列表

时间:2019-05-08 10:30:46

标签: javascript

    <template>
        <form enctype="multipart/form-data">
                <input type="file" @change="onFileChange">
        </form>

    </template>

    <script>

data() {
    return {
       fileinput: ''
   }
}
    methods: {
    onFileChange: function(e) {
          var files = e.target.files || e.dataTransfer.files;
          if (!files.length) return;
          this.createInput(files[0]);
        },

        createInput(file) {
          var reader = new FileReader();
          var vm = this;
          reader.onload = e => {
            vm.fileinput = reader.result;

          };
          reader.readAsText(file);
        },

 watch: {
    fileinput: {
      handler: function(val) {
        let csv_result = val;
        let split = csv_result.split(',');
        let name = split[0];
        let email = split[1];
        console.log(name);
        console.log(email);

      }
    }
  }
    }
    </script>

我有一个将csv文件放入其中的函数。 csv文件有两列,名称和电子邮件; 然后,该函数返回结果,该结果是姓名和电子邮件的列表,如下所示:

Name,Email
fooname foosurname,fooemail@gmail.com
fooname1 foosurname1,fooemail1@gmail.com
fooname2 foosurname2,fooemail2@gmail.com

手表上的日志返回:

Name
Email
fooname foosurname

我想要实现的是拥有一个对象数组,该对象的每一行将具有全名和电子邮件。

[
  { name: "fooname foosurname", email: "fooemail@gmail.com" },
  ...
]

我该如何实现?

1 个答案:

答案 0 :(得分:1)

尝试

csv.split(/\r?\n/).map(x=>x.split(/,/)).map(x=>({name:x[0],email:x[1]}) )

let csv=`Name,Email
fooname foosurname,fooemail@gmail.com
fooname1 foosurname1,fooemail1@gmail.com
fooname2 foosurname2,fooemail2@gmail.com`

let r= csv.split(/\r?\n/).map(x=>x.split(/,/)).map(x=>({name:x[0],email:x[1]}) );

r.shift(); // remove header (first item)
console.log(r);