我有两个数组,一个包含税码(emptaxdeductcode),另一个包含为这些税码支付的金额(emptaxamt)。
我正在尝试查找为仅支付以31 结尾的税码的金额。这些税码有不同的字符数,但我需要的字符总是12个字符。
尝试使用一个简单的for循环,但它似乎在第3行突破。即使对于那些有相关税号的人,它总是显示0:
var returnedValue = 0;
for (var q = 0; q < emptaxdeductcode.length; q++) {
if (emptaxdeductcode[q].substring(10,11) == "31") {
returnedValue += emptaxamt[q];
} else {
0;
}
}
returnedValue;
我尝试了以下测试,它返回true: (这个税法并不总是在[5]中,所以我不能只使用它。另外还有人有多个税码以31结尾)
if (emptaxdeductcode[5].substring(10,11) == "31") {
"TRUE";
} else {
"FALSE";
}
所以它必须是for循环中导致问题的子串。任何指导将不胜感激!
编辑:这是一个数据样本。如果这出口很奇怪而道歉 - 不完全确定如何制作表格:
emptaxdeductcode | emptaxamt
--- | ---
00-10 | 55.36
00-11 | 8.33
00-12 | 35.63
39-20 | 17.64
39-22 | 0.40
390770040-31 | 9.48
390770040-32 | 2.00
Edit2:我用来构建此报告的软件不支持许多JS实用程序/库。有关类似问题的stackoverflow上的很多帖子已经通过'prototype'函数或AngularJS等解决了。不幸的是,这对我不起作用。
答案 0 :(得分:0)
我认为你的主要问题是你只使用子字符串而不是2来读取字符串中的1个字符。
我想你想要
emptaxdeductcode[q].substring(10,12)
代替。
这是一些示例代码和JSFiddle。
var emptaxdeductcode = ["123451234531", "123451234532"];
var emptaxamt = [10, 20];
var returnedValue = 0;
for (var q = 0; q < emptaxdeductcode.length; q++)
{
if (emptaxdeductcode[q].substring(10,12) == "31") {
returnedValue += emptaxamt[q];
} else {
0;
}
}
alert(returnedValue);
答案 1 :(得分:0)
当你这样做时
console.log(emptaxdeductcode[q].substring(10, 11));
你会看到你回来3
,而不是31
。所以你需要把它撞到12。
var emptaxdeductcode = ["00-10", "00-11", "00-12", "39-20", "39-22", "390770040-31", "390770040-32"],
emptaxamt = [55.36, 8.33, 35.63, 17.64, 0.40, 9.48, 2.00];
var returnedValue = 0;
for (var q = 0; q < emptaxdeductcode.length; q++) {
if (emptaxdeductcode[q].substring(10, 12) == "31") {
returnedValue += emptaxamt[q]
}
}
console.log(returnedValue);
&#13;
我个人会使用
var code = emptaxdeductcode[q].substr(-2);
或
var code = emptaxdeductcode[q].split("-").pop();
var emptaxdeductcode = ["00-10", "00-11", "00-12", "39-20", "39-22", "390770040-31", "390770040-32"],
emptaxamt = [55.36, 8.33, 35.63, 17.64, 0.40, 9.48, 2.00];
var total = emptaxdeductcode.reduce( function(total, code, ind){
if (code.split("-").pop() === "31") {
total += emptaxamt[ind];
}
return total;
}, 0);
console.log(total);
&#13;