信息
Current online version链接到我的网站
示例输入
Copper Box v3;
S/N:25304;FW:1.07.12;
;a-b;a-GND;b-GND;
U=;0.74 V;3.23 V;0.48 V;
U~;0.03 V;0.02 V;0.02 V;
C;232.5 nF;11.87 nF;30.73 nF;
ISO;2.28 MΩ;237 kΩ;2.19 MΩ;
R;- -;
ΔC;- -;
Length; - m;
所需的输出
U=
A-B 0.74 V //this cant be more then 5volts
A-G 3.23 V //this cant be more then 5volts
B-G 0.48 V //this cant be more then 5volts
U~
A-B 0.03 V //this cant be more then 5volts
A-G 0.02 V //this cant be more then 5volts
B-G 0.02 V //this cant be more then 5volts
Cap
A-B 232.5 nF / 6.64 ff //ab is always dividend by 35
A-G 11.87 nF / 0.27 ff //ag is always dividend by 44
B-G 30.73 nF / 0.69 ff //bg is always dividend by 44
difference
A-G en B-G =18.86 nF //this number cant be bigger then 5
ISO
A-B 2.28 MOhm [X] //if lower then 3Mohm thare is an error
A-G 237 KOhm [X] //if lower then 3Mohm thare is an error
B-G 2.19 MOhm [X] //if lower then 3Mohm thare is an error
difference
A-G en B-G =2.953 MOhm // this number cant be bigger then 100 Mohm
当前代码
<table>
<tr>
<th>input</th><th> </th><th>output</th>
</tr>
<tr>
<td><textarea style="background-color:#CACACA" id="source" cols="30" rows="22"></textarea></td>
<td> </td>
<b><td><textarea style="background-color:#CACACA" id="target" cols="30" rows="22" readonly></textarea></td></b>
</tr>
</table>
<script type="text/javascript">
document.getElementById("target").style.fontWeight = "600";
document.getElementById("source").style.fontWeight = "600";
document.querySelector("#source").addEventListener("input", function () {
const lines = this.value
.split(/^;/m) //split top ^ when a line starts at ;
.slice(1)
.join("")//;
console.log(lines);
var newlines = lines.replace(/MΩ/g, "MOhm" ) //find Ω and replace to Ohm
var newnewlines = newlines.replace(/kΩ/g, "KOhm [x] ") //find kΩ and replace to error's
.split("\n")//;
console.log(newlines)//;
console.log(newnewlines);
// var newnewlines = [];
newnewlines.push('item 1');
newnewlines.push('item 2');
newnewlines.push('item 3');
newnewlines.push('item 4');
newnewlines.push('item 5');
newnewlines.push('item 6');
var ab = parseFloat(newnewlines[1]) < 5;
if (ab < 5) {
ab = "[v] good";
} else {
ab = "[x] error";
}
// log This is the place whare i break my brain
console.log(ab);
console.log(newnewlines[1]);
console.log(newnewlines[2]);
console.log(newnewlines[3]);
console.log(newnewlines[4]);
console.log(newnewlines[5]);
console.log(newnewlines[6]);
const cols = newnewlines
.shift()
.toUpperCase() // makes A-B uppercase
.split(";") //enter after;
.filter(Boolean)
.map(code => code.slice(0,3))//;
console.log(cols);
document.querySelector("#target").value =
newnewlines.filter(line => /;\d/.test(line))
.map(line => line.split(";").filter(Boolean))
.map(
([s, ...v]) => s + "\n" +
v.map((value, i) => cols[i] + " " + value )
.join("\n")
)
.join("\n");
});
</script><br><br>
Test Text <br>
<textarea style="background-color:#CACACA" cols="30" rows="22">
Device:ARGUS153;
S/N:55565;FW:1.80.00;
Copper Box v3;
S/N:25304;FW:1.07.12;
;a-b;a-GND;b-GND;
U=;0.74 V;3.23 V;0.48 V;
U~;0.03 V;0.02 V;0.02 V;
C;232.5 nF;11.87 nF;30.73 nF;
ISO;2.28 MΩ;237 kΩ;2.19 MΩ;
R;- -;
ΔC;- -;
Length; - m;
</textarea>
问题
已经有一段时间了,我还没有完成难题,我还在学习如何做到这一点
我在控制台中有很多信息,但是我仍然没有用它来计算 我尝试从数组中获取数字,然后将条件放入其中
我不是在寻找为我做所有事情的人,而是在寻找我自己最好的方法,因为Java脚本是我的新手,所以我对数组一无所知
答案 0 :(得分:0)
我建议的方法与您提到的“问答”的第一部分中使用的方法不同。这是因为您正在进行计算(差异)和进行检查(产生[X]
),这意味着您对源将确切包含什么以及以什么顺序具有更高的期望。
该代码可能会将实际的输出格式延迟为模板文字。然后,该代码仅需要从输入中提取数字(和单位)。模板文字(包含公式(减法)和条件[X]
的包含)将完成其余工作。
尽管有一件棘手的事情:解决方案必须了解度量单位之间的差异,所以即使当一个数字用kΩ表示而另一个数字用MΩ表示时,它也能正确执行减法运算。为此,我建议创建一个对象,该对象指示应将哪些单位转换为统一单位以及使用哪个因子。该解决方案仅定义了一种此类转换,但是您可以在需要的地方进行扩展。结果,输出将使用统一的度量单位,因此237kΩ将显示为0.237MΩ。
下面的代码假定感兴趣的数字将始终跟在空格后面,再跟一个度量单位(除分号之外的任何字符序列),再跟一个分号。输入中至少应有12个这样的序列。因此,实际上,您可以从输入中消除很多“噪音”,但仍然可以获得正确的输出。
// List of units that should be converted
const divisor = {
kΩ: 1000 // Convert kΩ to MΩ
};
function refresh() {
const u = (document.querySelector("#source").value
// extract the numbers with their units:
.match(/[\d.]+\s+[^;]+/g) || [])
// convert numbers to number type in uniform unit of measure:
.map(m => +(parseFloat(m) / (divisor[m.split(/\s+/)[1]] || 1)).toString());
document.querySelector("#target").innerHTML =
u.length < 12 ? "(not enough values)" :
`U=
A-B ${u[0]} V ${u[0]>5?"[X]":""}
A-G ${u[1]} V ${u[1]>5?"[X]":""}
B-G ${u[2]} V ${u[2]>5?"[X]":""}
U~
A-B ${u[3]} V ${u[3]>5?"[X]":""}
A-G ${u[4]} V ${u[4]>5?"[X]":""}
B-G ${u[5]} V ${u[5]>5?"[X]":""}
Cap
A-B ${u[6]} nF / ${(u[6]/35).toFixed(2)} ff
A-G ${u[7]} nF / ${(u[7]/44).toFixed(2)} ff
B-G ${u[8]} nF / ${(u[8]/44).toFixed(2)} ff
difference
A-G en B-G = ${u[8]-u[7]} nF ${u[8]-u[7]>5?"[X]":""}
ISO
A-B ${u[9]} MOhm ${u[9]<3?"[X]":""}
A-G ${u[10]} MOhm ${u[10]<3?"[X]":""}
B-G ${u[11]} MOhm ${u[11]<3?"[X]":""}
difference
A-G en B-G = ${(u[11]-u[10]).toFixed(3)} MOhm`;
}
document.querySelector("#source").addEventListener("input", refresh);
document.querySelector("button").addEventListener("click", () => {
document.querySelector("#source").innerHTML = `Copper Box v3;
S/N:25304;FW:1.07.12;
;a-b;a-GND;b-GND;
U=;0.74 V;3.23 V;0.48 V;
U~;0.03 V;0.02 V;0.02 V;
C;232.5 nF;11.87 nF;30.73 nF;
ISO;2.28 MΩ;237 kΩ;2.19 MΩ;
R;- -;
ΔC;- -;
Length; - m;`;
refresh();
});
<table>
<tr>
<th>Paste output here: <button>Sample</button></th><th>Beautified:</th>
</tr>
<tr>
<td><textarea id="source" cols="30" rows="21"></textarea>
</td>
<td><textarea id="target" cols="30" rows="21" readonly></textarea></td>
</tr>
</table>