【发布时间】:2018-01-26 02:31:21
【问题描述】:
我正在制作一个用于分析我的银行交易历史记录的 Google 表格文档。我的许多交易描述都以相同的字母开头,特别是“SIG”(正确的大小写)。我想统计这些交易的数量,但我不能。
为了进行故障排除,我确保 indexOf 在我只检查一个单元格/输入时有效。在单元格中找不到“SIG”时返回“-1”,在单元格开头找到“SIG”时返回“0”。
再次进行故障排除,我还确保我正确循环了一个数组(多个单元格),该数组仅计算非空单元格的数量。这也有效。
当我试图把所有东西放在一起时,我无法让它工作,我不知道为什么。短函数如下。感谢您的帮助。
function SIG_counter (descriptions) {
var SIG_total = 0;
var SIG_checker;
for (var i=0; i<descriptions.length; i++) {
var SIG_checker = descriptions[i].indexOf("SIG");
Logger.log(descriptions[i]);
Logger.log(SIG_checker);
if (SIG_checker == 0.0) {
SIG_total++;
}
}
return SIG_total;
}
var sample_array = ["Funds Added (Donation)",
"SIG POS purchase at Paypal",
"PIN POS purchase cashback",
"PIN POS purchase cashback",
"SIG POS purchase at Paypal"]
function trouble_shooter () {
SIG_counter(sample_array);
}
日志:
[18-01-28 15:30:54:630 PST] Funds Added (Donation)
[18-01-28 15:30:54:630 PST] -1.0
[18-01-28 15:30:54:631 PST] SIG POS purchase at Paypal
[18-01-28 15:30:54:631 PST] 0.0
[18-01-28 15:30:54:632 PST] PIN POS purchase cashback
[18-01-28 15:30:54:632 PST] -1.0
[18-01-28 15:30:54:632 PST] PIN POS purchase cashback
[18-01-28 15:30:54:633 PST] -1.0
[18-01-28 15:30:54:633 PST] SIG POS purchase at Paypal
[18-01-28 15:30:54:634 PST] 0.0
【问题讨论】:
-
您是否可以在不暴露您的个人信息的情况下硬编码一个数组并使用硬编码的数组更新您的问题
-
代码看起来应该可以工作,虽然你应该写
== 0,因为indexOf()返回的是一个数字,而不是一个字符串。 -
如果你这样做
console.log(descriptions[i], SIG_checker)你会看到什么? -
我猜 descriptions 是一个二维数组,而 descriptions[i] 指的是一个一维数组。因此,
descriptions[i].indexOf("SIG")正在调用 indexOf array prototype function。哪个需要完美匹配 -
@user6069863:我已经包含了一个示例数组。
标签: javascript arrays google-apps-script google-sheets indexof