用javascript计算for循环中条件为true的次数
Count how many times a conditional is true inside for loop with javascript
我在这里过得很艰难,我知道不会那么困难。我有一个for循环,它在我试图编写的谷歌应用程序脚本中的一系列单元格值上运行,每次循环时,它都会检查某个条件是否成立。如果这是真的,那么目前它正在将结果记录到Logger.log().中
我需要Logger.log()中显示的结果总数(在这种情况下,应该是10),我能想到的最好的方法是在for循环中,每次条件为true时都加1。得到多少结果的数值应该很简单,但我缺乏经验,几个小时以来一直在寻找任何我认为可能对我有帮助的东西,我就是想不出来。这是我正在使用的代码。
var currentsheet = SpreadsheetApp.getActiveSheet();
var values = currentsheet.getRange("A28:E").getValues();
for (i=0; i<values.length; i++) {
if (values[i][3] === "Section 179 Depreciation") {
var date = values[i][0];
var amount = values[i][1];
var desc = values[i][2];
var expType = values[i][3];
var notes = values[i][4];
}
}
如果有人能告诉我我错过了什么,我将不胜感激!
您可以使用Array.prototype.filter
来过滤值并获取其长度:
var filtered = values.filter(function(x) {
return x[3] === "Section 179 Depreciation";
});
var count = filtered.length;
或使用ES6箭头功能:
var filtered = values.filter(x => x[3] === "Section 179 Depreciation");
var count = filtered.length;
重用这些filtered
值会更方便,例如记录它们:
filtered.forEach(function(x) {
var date = x[0];
var amount = x[1];
var desc = x[2];
var expType = x[3];
var notes = x[4];
// log
});
现在它在数组中迭代两次,这可能会影响性能,但它肯定会提高可读性。如果性能不重要,请使用此选项。
如果需要使用数据,我会将其保存到数组中,以便获得要使用的数组方法。
var currentsheet = SpreadsheetApp.getActiveSheet();
var values = currentsheet.getRange("A28:E").getValues();
var section179 = [];
for (i=0; i<values.length; i++) {
if (values[i][3] === "Section 179 Depreciation") {
var date = values[i][0];
var amount = values[i][1];
var desc = values[i][2];
var expType = values[i][3];
var notes = values[i][4];
section179.push({
date: date,
amount: amount,
desc: desc,
expType: expType,
notes: notes
});
}
}
console.log( section179.length );
console.log( total( section179, 'amount' ) );
// example total up all the results of a number property
function total( arr, prop ){
return arr.reduce(function( ret, curr ){
return ret + curr[ prop ];
}, 0);
}
取一个全局变量计数器,用0初始化它,并在它进入if条件时增加计数器的值。它会告诉你这个条件成立的次数。每当您想开始计数时,只需将计数器初始化为0。
var currentsheet = SpreadsheetApp.getActiveSheet();
var values = currentsheet.getRange("A28:E").getValues();
var counter = 0;
for (i = 0; i < values.length; i++) {
if (values[i][3] === "Section 179 Depreciation") {
var date = values[i][0];
var amount = values[i][1];
var desc = values[i][2];
var expType = values[i][3];
var notes = values[i][4];
counter++;
}
}
var currentsheet = SpreadsheetApp.getActiveSheet();
var values = currentsheet.getRange("A28:E").getValues();
var j=0;
for (i=0; i<values.length; i++) {
if (values[i][3] === "Section 179 Depreciation") {
var date = values[i][0];
var amount = values[i][1];
var desc = values[i][2];
var expType = values[i][3];
var notes = values[i][4];
j++;
}
}
alert(j);
因此您可以在循环
中的条件为true后获得总值这是循环的Javascript
在这种情况下,我会使用以下方式的计数器:
var currentsheet = SpreadsheetApp.getActiveSheet();
var values = currentsheet.getRange("A28:E").getValues();
var counter = 0; // counter
for (i=0; i<values.length; i++) {
if (values[i][3] === "Section 179 Depreciation") {
var date = values[i][0];
var amount = values[i][1];
var desc = values[i][2];
var expType = values[i][3];
var notes = values[i][4];
counter++; //we encrease counter every time condition is true
}
}
相关文章:
- 当我的条件为true时,显示一条弹出消息
- Jquery:当两个或多个条件为true时,选择一个元素
- 如果函数PHP中的条件为true,则禁用链接
- jQuery条件为true,但它'it’’我没有犯
- 如果条件为true,ServiceNow显示按钮
- 在执行另一个异步函数之前,只有当条件为true时,才执行某些异步函数的最佳方法
- 在HTML中搜索字符串并返回True的Javascript条件
- if 语句的条件应该等于 true,但事实并非如此
- 获取消息条件始终为 true
- 为什么空的 JavaScript 数组在条件结构中的计算结果为 true
- 如果条件为 true,则向父元素添加类
- 如果条件为 true,则在输入字段中打印具有特定 ID 的文本
- 若条件为true,则将类分配给子级
- 用javascript计算for循环中条件为true的次数
- 我如何找到默认为true的条件
- if语句的条件总是求值为true
- 如何创建一个javascript侦听器函数,该函数将在条件为true时执行操作
- Javascript true条件未被执行
- Javascript多个if true条件
- Ng-class在ng-click的true条件下不能工作