gpt4 book ai didi

javascript - 如何使用 javascript 总结不同的值

转载 作者:行者123 更新时间:2023-12-02 17:53:39 24 4
gpt4 key购买 nike

我想尝试从列表中总结不同的值。目前,如果只有 2 个相似的记录,我就可以这样做。如果超过 2 个,我将无法进行检查。以下是 JavaScript 代码:

function validateData(){
var total = document.frm.size.value;
var msg="";
var tbxA;
var tbxB;
var tbxA2;
var tbxB2;
var tbxC;
var totalValue =0;
var repeatedValue= 0;
var row = 0;
var row2 = 0;

for(var i=0; i<parseInt(total); i++){
tbxA = document.getElementById('tbx_A'+i).value;
tbxB = document.getElementById('tbx_B'+i).value-0;
tbxC = document.getElementById('tbx_C'+i).value;
for(var j=i+1; j<parseInt(total); j++){
tbxA2 = document.getElementById('tbx_A'+j).value;
tbxB2 = document.getElementById('tbx_B'+j).value-0;

if (tbxA==tbxA2) {
totalValue = tbxB + tbxB2;
}
if (totalValue != tbxC) {
repeatedValue= 1;
row = i;
row2 = j;
msg+="*total value does not add up at row " +(row2+1);
break;
}
}
if(repeatedValue== 1){
break;
}
}
return msg;
}

例如A:水果类型,B:每种水果的总数,C:一次购买了多少个
C 的总和应该等于 B。即 Apple:3+3+4 = 10。所以如果总和不等于 10,它应该提示我一个错误。

 A       B     C
Apple 10 3
Orange 10 10
Apple - 3
Apple - 4

我上面的代码会提示错误,但它不会超出 Apple 的第二次出现。
所以是的,我应该如何确保它循环遍历整个列表以总结所有相似的值?

预先感谢您提供任何可能的帮助!

最佳答案

试试这个:

var total = +document.frm.size.value,
data = {};
for(var i=0; i<total; ++i) {
var key = document.getElementById('tbx_A'+i).value;
data[key] = data[key] || {B:0, C:0};
data[key].B += +document.getElementById('tbx_B'+i).value || 0;
data[key].C += +document.getElementById('tbx_C'+i).value || 0;
}
for(var i in data) {
if(data.hasOwnProperty(i) && data[i].B != data[i].C) {
return "total value does not add up";
}
}
return "";

一些评论:

  • parseInt(和parseFloat)非常慢。字符串之前的 + 运算符将其转换为数字的速度要快得多。但如果您确实想确保数字是整数,请使用 Math.floor()、Math.round()、Math.ceil() code> 或更快但难以辨认的 |0
  • 如果您确实想要 parseInt(例如,您希望将 '123foobar' 转换为 123),请始终使用基数。例如:parseInt('123', 10)
  • 避免在循环条件下进行计算,因为它们在每次迭代时运行。只需在循环之前计算一次并将结果保存在变量中即可。

关于javascript - 如何使用 javascript 总结不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152332/

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