我有两个数组,一个带有税收代码(emptax扣减代码),另一个具有为这些税号支付的金额(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循环中的子字符串。任何指导都将不胜感激!
编辑:这是数据的一个示例。如果这是奇怪的--不太确定如何制作表格,很抱歉:
空管扣减代码\ emptaxamt
00-10 - 55.36
00-11 - 8.33
00-12 - 35.63
39-20 x 17.64
39-22 x 0.40
390770040-31 - 9.48
390770040-32 x2
Edit2:我用来构建这个报告的这个软件不支持很多JS实用程序/库。与我类似的问题,很多关于堆栈溢出的文章都是用“prototype”函数或AngularJS之类的方法解决的。不幸的是这对我没用。
发布于 2016-11-10 15:05:38
我认为您的主要问题是,您只使用子字符串而不是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);发布于 2016-11-10 15:32:27
当你做的时候
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);
我个人要么用
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);
https://stackoverflow.com/questions/40530623
复制相似问题