我有一個.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;
//...
}
...
有誰知道一個聰明的方式做轉換陣列集合?
非常感謝!