我是个初学者,好...我试图在数组元素中使用数学运算符,但是我不知道自己在做什么错。我使用parseInt和Number函数用一些整数来增加数组元素,但是它不起作用。
我的工作表中的原始值是: [[1000.0],[1000.0],[3000.0],[1000.0],[],[],[],[],[],[]]
当我尝试没有parseInt / Number 时,结果是: [01000100030001000、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]
当我尝试使用parseInt / Number 时: [NaN,0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]
function myFunction() {
var ssCDB = SpreadsheetApp.getActive().getSheetByName("CDB");
var cdbRange = ssCDB.getRange(3, 3, 10, 1).getValues();
var cdbSum = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
Logger.log(cdbRange);
for (var i=0; i<cdbRange.length; i++) {
cdbSum[0] = cdbSum[0] + cdbRange[i];
//cdbSum[0] = parseInt(cdbSum[0]) + parseInt(cdbRange[i]);
}
Logger.log(cdbSum);
}
我期望的是:[ 6000.0 ,0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]
我在做什么错?有什么想法吗?
答案 0 :(得分:1)
此修改如何?我认为您遇到的问题有3个。
cdbRange
是二维数组。但是您像cdbRange[i]
一样使用它。
cdbRange[0]
是[1000.0]
,它是一个对象。cdbSum[0] = cdbSum[0] + cdbRange[i]
,cdbSum[0]
用作字符串值。因为cdbRange[i]
是一个对象。当它向数字添加对象时,它成为字符串类型。
01000100030001000
的原因。 cdbSum[0]
的初始值为0
。cdbRange
的索引4到9中的元素的值为undefined
。
NaN
。为避免这些问题,请进行以下修改。
cdbSum[0] = cdbSum[0] + cdbRange[i];
if (cdbRange[i][0]) cdbSum[0] += cdbRange[i][0];
或
if (cdbRange[i][0]) cdbSum[0] += Number(cdbRange[i][0]);
[6000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
cdbRange
的所有元素的总和加到cdbSum[0]
。如果我误解了您的问题,请告诉我。我想修改它。
答案 1 :(得分:0)
我认为这是您想要做的:
function myFunction() {
var sh=SpreadsheetApp.getActiveSheet();
var vA=sh.getRange(3,3,10,1).getValues();
var sumA=[0,0,0,0,0,0,0,0,0,0];
for(var i=0;i<vA.length;i++) {
sumA[i]+=vA[i][0];//a 1 column 2d array
}
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(sumA.join(', ')), 'Sum');//Do not need this it just show your sum values
}