【问题标题】:Convert String Array to Object Javascript将字符串数组转换为对象 Javascript
【发布时间】:2019-12-04 05:30:27
【问题描述】:

我正在做的是我需要上传一个 .csv 文件并获取其中的数据,我检查并使用这个 code 但返回字符串数组我试图找到一种方法来转换它但我不能找一个

function processData(allText) {
    var allTextLines = allText.split(/\r\n|\n/);
    var headers = ["Code", "LongName", "value", "dateFrom", "dateTo", "money"]

    var lines = [];

    for (var i = 1; i < allTextLines.length; i++) {
        var data = allTextLines[i].split(',');
        if (data.length == headers.length) {

            var tarr = [];
            for (var j = 0; j < headers.length; j++) {
                tarr.push(headers[j] + ":" + data[j]);
            }
            lines.push(tarr);
        }
    }

    console.log(lines);
    upload(lines);
}

字符串数组(实际输出):

0: Array()
    0: "Code:"'0000000001""
    1: "LongName:"TEST1""
    2: "value:0.0000"
    3: "dateFrom:"07-10-2019""
    4: "dateTo:"07-11-2019""
    5: "money:0.0000"

预期输出:

0:
    code: "0000000001"
    longName: "TEST1"
    value: 0.0000
    dateFrom: "07-10-2019"
    dateTo: "07-11-2019"
    money: 0.0000

【问题讨论】:

  • Array of string(actual output): 中是 0,1,2 .... 数组索引还是什么?

标签: javascript arrays asp.net-mvc controller


【解决方案1】:

使用对象和括号表示法

function processData(allText) {
    var allTextLines = allText.replace(/"/g, '').split(/\r\n|\n/);
    var headers = ["Code", "LongName", "value", "dateFrom", "dateTo", "money"]

    var lines = [];

    for (var i = 1; i < allTextLines.length; i++) {
        var data = allTextLines[i].split(',');
        if (data.length == headers.length) {

            var tarr = {};
            for (var j = 0; j < headers.length; j++) {
                tarr[headers[j]] = data[j];
            }
            lines.push(tarr);
        }
    }
    console.log(lines);
    //upload(lines);
}

processData('\n\"0000000001\",Test"1,0.0000,07-10-2019,07-11-2019,0.0000')

【讨论】:

  • 如果我输入了错误的输出,我已经更新了我的问题。我已经尝试过您的代码,但这可以与上面更新的输出一起使用吗?谢谢先生。
【解决方案2】:

你可以做的是将你的数组分配给一个带有Object.assign()的对象

function processData(allText) {
    var allTextLines = allText.split(/\r\n|\n/);
    var headers = ["Code", "LongName", "value", "dateFrom", "dateTo", "money"]

    var lines = [];

    for (var i = 1; i < allTextLines.length; i++) {
        var data = allTextLines[i].split(',');
        if (data.length == headers.length) {

            var tarr = [];
            for (var j = 0; j < headers.length; j++) {
                tarr.push(headers[j] + ":" + data[j]);
            }
            lines.push(tarr);
        }
    }
let objectOfLines=Object.assign({},lines)
    console.log(lines,objectOfLines);
    upload(objectOfLines);
}

【讨论】:

  • 您好,先生。我已经更新了我的问题,请看一下。感谢您的帮助。
猜你喜欢
  • 2013-04-19
  • 2018-09-25
  • 1970-01-01
  • 2017-08-24
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多