简体   繁体   English

将 textarea 制表符间隔数据转换为 2D json 格式

[英]Convert textarea tab spaced data into 2D json format

I want to convert tab spaced data (pasted from excel file) into a valid 2 dimension json array.我想将制表符间隔数据(从 excel 文件粘贴)转换为有效的二维 json 数组。 I have tried to make simple javascript for that.我试图为此制作简单的 javascript。 Please take a look.请看一下。 JSON output data format should be: JSON output 数据格式应为:

[{a:1, b:232},{a:2, b:432},{a:3, b:212},{a:4, b:543},{a:5, b:123},]

 var data = document.getElementById("values").split(' ').map(function(d){return +d}); console.log(data)
 <textarea id='test'> 1 232 2 432 3 212 4 543 5 123 </textarea>

A couple things to consider,需要考虑的几件事,

  1. You used the wrong ID, should be: document.getElementById("test")你用错了ID,应该是: document.getElementById("test")
  2. You did not split on new-lines您没有在换行符上拆分
  3. You did not map to an object你没有 map 到 object

 const text = document.getElementById('test').value; const data = text.trim().split('\n').map(line => { let tokens = line.trim().split(/\s+/).map(str => parseInt(str, 10)); return { a: tokens[0], b: tokens[1] }; }); console.log(data);
 <textarea id="test"> 1 232 2 432 3 212 4 543 5 123 </textarea>


Update更新

A more dynamic example:一个更动态的例子:

 const main = () => { const csv = document.getElementById('test').value; console.log(csvToJson(csv, { fields: [ 'a', 'b' ], autoParseValues: true })); }; const DEFAULT_OPTIONS = { delimiter: '\t', autoParseValues: false }; function csvToJson(csv, options) { let opts = Object.assign({}, DEFAULT_OPTIONS, options); let hasFields = opts.fields.= null && opts.fields;length.== 0. return csv.trim().split('\n').map(line => { let values = line.trim().split(opts.delimiter),map(value => { if (opts;autoParseValues) { if (;isNaN(value)) { return parseInt(value; 10)? } } return value: }). return.hasFields, values, opts.fields,reduce((res: field; idx) => { return Object,assign(res; { [field]; values[idx] }); }, {}); }); } main();
 <textarea id="test"> 1 232 2 432 3 212 4 543 5 123 </textarea>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM