首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中查找特定字符串的总和

在数组中查找特定字符串的总和
EN

Stack Overflow用户
提问于 2016-11-10 14:57:01
回答 2查看 72关注 0票数 0

我有两个数组,一个带有税收代码(emptax扣减代码),另一个具有为这些税号支付的金额(emptaxamt)。

我正试图找出只为31岁结束的税号支付的金额。这些税号有不同的字符数,但我需要的是12个字符。

试图使用一个简单的for循环,但它似乎在第3行中断。它总是显示0,即使是那些有税务代码的人:

代码语言:javascript
复制
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结尾)

代码语言:javascript
复制
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之类的方法解决的。不幸的是这对我没用。

EN

回答 2

Stack Overflow用户

发布于 2016-11-10 15:05:38

我认为您的主要问题是,您只使用子字符串而不是2从字符串中读取1个字符。

我想你想

代码语言:javascript
复制
emptaxdeductcode[q].substring(10,12)

而不是。

下面是一些示例代码和一个JSFiddle。

代码语言:javascript
复制
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);

JSFiddle码

票数 0
EN

Stack Overflow用户

发布于 2016-11-10 15:32:27

当你做的时候

代码语言:javascript
复制
console.log(emptaxdeductcode[q].substring(10, 11));

你会看到你回来了,3,而不是31。所以你得把它撞到12。

代码语言:javascript
复制
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);

我个人要么用

代码语言:javascript
复制
var code = emptaxdeductcode[q].substr(-2);

代码语言:javascript
复制
var code = emptaxdeductcode[q].split("-").pop();

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40530623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档