我有一个.txt文件,看起来像这样。如何将数组转换为集合
ID;SubID;No.;Name;Min;Max;Default;Factor;Unit
101;5;0;Gas flow time;0;100;0.1;10;s
101;30;1;Start speed;20;200;120;1;m/s
;;2;Start current;0;999;1.0;10;A
我导入使用NPM包 'FS'此.txt文件与READFILE和我将其转换为使用CSVToArray阵列。在这里你可以找到我用于转换的代码。
function CSVToArray(strData, strDelimiter){
// Check to see if the delimiter is defined. If not, then default to comma.
strDelimiter = (strDelimiter || ";");
// Create a regular expression to parse the CSV values.
var objPattern = new RegExp(
(
// Delimiters.
"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
// Quoted fields.
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
// Standard fields.
"([^\"\\" + strDelimiter + "\\r\\n]*))"
),
"gi"
);
// Create an array to hold our data. Give the array a default empty first row.
var arrData = [[]];
// Create an array to hold our individual pattern
// matching groups.
var arrMatches = null;
// Keep looping over the regular expression matches until we can no longer find a match.
while (arrMatches = objPattern.exec(strData)){
// Get the delimiter that was found.
var strMatchedDelimiter = arrMatches[ 1 ];
// Check to see if the given delimiter has a length (is not the start of string) and if it matches
// field delimiter. If id does not, then we know that this delimiter is a row delimiter.
if (
strMatchedDelimiter.length &&
strMatchedDelimiter !== strDelimiter
){
// Since we have reached a new row of data, add an empty row to our data array.
arrData.push([]);
}
var strMatchedValue;
// Now that we have our delimiter out of the way, let's check to see which kind of value we
// captured (quoted or unquoted).
if (arrMatches[ 2 ]){
// We found a quoted value. When we capture this value, unescape any double quotes.
strMatchedValue = arrMatches[ 2 ].replace(
new RegExp("\"\"", "g"),
"\""
);
} else {
// We found a non-quoted value.
strMatchedValue = arrMatches[ 3 ];
}
// Now that we have our value string, let's add it to the data array.
arrData[ arrData.length - 1 ].push(strMatchedValue);
}
// Return the parsed data.
return(arrData);
现在我想创建一个名为参数集指出,从CSVToArray返回数组的。收集应该是这样的:
// First entry:
Parameter = {
ID: 101;
SubID: 5;
No: 0;
//...
}
// Second entry:
Parameter = {
ID: 101;
SubID: 30;
No:1;
//...
}
...
有谁知道一个聪明的方式做转换阵列集合?
非常感谢!