簡體   English   中英

解析類似於 CSV 文件的字符串

[英]Parsing a string similar to a CSV file

有一個模仿 CSV 文件的字符串,您必須將其傳遞給一個函數並獲得一個由對象組成的數組。 怎么做? 請幫忙。

function STRtoArray (str) {
    // Code here
}

var str = 'Name,Age,Car,wife \n John,25,,true\n Ben,31,wolksvagen,false'

預期結果如下:

[
  {
    Name: John,
    Age: 25,
    Car: false,
    wife: true
  },
  {
    Name: Kolya,
    Age: 31,
    Car: wolksvagen,
    wife: false
  }
]

 function strToArray (str) { var lines = str.split(/\\n/); var keys = lines[0].split(','); var arr = []; for (var i = 1; i < lines.length; i++) { var line = lines[i].trim().split(','); var obj = {}; for (var j = 0; j < line.length; j++) { obj[keys[j].trim()] = (line[j].length ? (line[j] === 'true' ? true : (line[j] === 'false' ? false : (isNaN(line[j]) ? line[j] : parseInt(line[j])))) : false); } arr.push(obj); } return arr; } var str = 'Name,Age,Car,wife \\n John,25,,true\\n Ben,31,wolksvagen,false' console.log(strToArray(str));

使用String.prototype.split()Array.prototype.map()Array.prototype.reduce()函數的解決方案:

 function STRtoArray(str) { var lines = str.split('\\n'), keys = lines[0].trim().split(','); // getting key fields var result = lines.slice(1).map(function (l){ return l.trim().split(',').reduce(function (r, l, i) { if (i === 1) l = Number(l); // casting 'Age' field to number type if (i === 3) l = Boolean(l === 'true'? 1:0); r[keys[i]] = l; return r; }, {}); }); return result; } var str = 'Name,Age,Car,wife \\n John,25,,true\\n Ben,31,wolksvagen,false' console.log(STRtoArray(str));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM