gpt4 book ai didi

Javascript - 如果条件满足则不比较

转载 作者:行者123 更新时间:2023-11-30 11:20:56 26 4
gpt4 key购买 nike

我的 html 表格有这个脚本,它逐行为列中的单元格着色:

$(document).ready( function () {

var table, aP, rtvP, mmP, meP;
table = document.getElementById('productTable');

for (i = 1; i < table.rows.length; i++) {

var rowCells = table.rows.item(i).cells;
if (rowCells[3].firstChild.data !== '—') {
aP = parseFloat(rowCells[3].firstChild.data);
} else {
aP = 0;
}
if (rowCells[5].firstChild.data !== '—') {
rtvP = parseFloat(rowCells[5].firstChild.data);
} else {
rtvP = 0;
}
if (rowCells[7].firstChild.data !== '—') {
mmP = parseFloat(rowCells[7].firstChild.data);
} else {
mmP = 0;
}
if (rowCells[9].firstChild.data !== '—') {
meP = parseFloat(rowCells[9].firstChild.data);
} else {
meP = 0;
}
console.log(aP, rtvP, mmP, meP);

if (aP > rtvP || mmP || meP) {
rowCells[3].bgColor = 'red';
} else if (aP === rtvP || mmP || meP) {
rowCells[3].bgColor = 'yellow';
} else {
rowCells[3].bgColor = 'green';

}


}

})

我知道那是个小怪物,但我唯一想念的是,如果该值 = 0,则不应该进行值比较。例如。如果aP = 100, rtvP = 150, mmP = 0, meP = 50,比较时应跳过mmP的值。有简单的方法吗?我不想再做一个 IF 意大利面

最佳答案

您可以尝试将其中一个实例转换为适当的函数:

function convertP(value) {
if (value !== '—') {
return parseFloat(value);
}

return 0;
}

然后你可以这样调用它:

meP = convertP(rowCells[9].firstChild.data);

您可以在哪里增强 convertP 函数以使其“更智能”并在以后处理不同的情况。

现在对于您的比较问题,您可能希望将这些转换后的值存储到一个数组中,而不是作为一堆不相关的变量,例如:

var points = [ ];

[ 3, 5, 7, 9 ].forEach(function(i) {
points.push(convertP(rowCells[i].firstChild.data));
});

现在您将所有这些都放在一个整洁的容器中。然后,您可以通过执行以下操作快速比较它们:

var diffs = [ ];
points.forEach(function(p) {
diffs.push(aP - p);
});

这里要记住的关键是浮点值通常是近似值,因此不要依赖于它们完全相等是很重要的。 1.0 + 2.0 不一定 === 3.0。由于浮点怪癖,会有微小的偏差,所以使用 +/- 一些微小的值,即使该值是 0.000001。

现在您可以使用一个函数来识别您的颜色状况:

function colorCondition(aP, points) {
var state = 'green';
var epsilon = 0.000001;

points.forEach(function(p) {
if (aP > (p + epsilon)) {
state = 'red';
}
else if (aP > (p - epsilon)) {
state = 'yellow';
}
});

return state;
}

现在您有了一个可以处理 N 个输入的通用解决方案。当您尝试遵守 Zero, One or Infinity Rule 时,这就是编程的目标。 .

关于Javascript - 如果条件满足则不比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com