查找数组中某些字符串的总数

Posted

技术标签:

【中文标题】查找数组中某些字符串的总数【英文标题】:Finding totals of certain strings in an Array 【发布时间】:2016-11-10 14:57:01 【问题描述】:

我有两个数组,一个包含税码 (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 |杀虫剂

--- | ---

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 实用程序/库。 *** 上很多与我有类似问题的帖子都已通过“原型”函数或 AngularJS 之类的东西得到解决。不幸的是,这对我不起作用。

【问题讨论】:

如何在第 3 行中断? 在处理它之前尝试记录 emptaxdeductcode[q] 的值,看看它在错误之前是什么。 emptaxdeductcode 可以包含任何空值吗? 你能展示一下你的数据是什么样子的吗? @epascarello - 打破,我的意思是它只是没有给我我需要的数据。它总是在不应该的时候返回零。 @TheReason 我编辑了我的帖子以显示一名员工的数据样本。 【参考方案1】:

我认为您的主要问题是您只使用子字符串而不是 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);

JSFiddle Code

【讨论】:

谢谢克里斯。我去尝试了这个 - 不幸的是没有bueno。即使将其更改为 substring(10) 也不起作用。 很奇怪。它在 jsFiddle 中完美运行。尝试将其输出记录到应用程序的控制台中。 console.log(emptaxdeductcode[q].substring(10,12));告诉我们你得到了什么。【参考方案2】:

当你这样做时

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);

【讨论】:

以上是关于查找数组中某些字符串的总数的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 该程序从用户获取一个字符串,并查找该字符串中存在的元音,辅音,数字和空白的总数。

在 OCR 获得的收据中查找总数 - PHP

查找数组的总数

从向量数组中查找给定向量中公共元素的数量

有没有办法拆分数组中的每个字符串并每次检索第 5 位,加到总数中?

如何查找数组计数值,在这里我找出数组的数量,但我想要总数组值