亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當某些單元格為空時如何在數組中添加數字 - javascript - google app

當某些單元格為空時如何在數組中添加數字 - javascript - google app

慕雪6442864 2023-04-27 10:25:47
我有一個 for 循環。循環的目的是在二維數組中索引一個由 5 個數字組成的一維數組,然后將該數組中的數字相加并將其放在另一張紙 (testSheet) 上。它返回像“0,45,,,40”這樣的文本。該程序運行良好,除了它沒有將數字相加。我猜這是因為有些單元格是空的,它沒有將它們識別為數字。for (var i=0; i < arrTarget.length; i++){  //find Row  var row = arrSource.indexOf(arrTarget[i]);  var numArr = shrinkLog.getRange(row+3,4,5).getValues();  //add units in an array  var sum = numArr.reduce(function(a,b){return a+b;},0);  //execute  var testsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test Sheet");  testsheet.getRange(i+1,1,1,1).setValue(sum);}有人可以幫助我如何讓程序將空單元格識別為數字 0 嗎?
查看完整描述

2 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

解釋:

主要問題是numArr是 形式的二維數組[[],[],[]]。

要實現目標,您需要執行兩個步驟:

  1. 為了使該reduce方法正常工作,展平數組:

    var numArr = shrinkLog.getRange(row+3,4,5).flat()

  2. 過濾掉空值(空白單元格)以獲得正確的總和:

    var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="")


解決方案:

替換為:

var numArr = shrinkLog.getRange(row+3,4,5).getValues();

var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="");

for (var i=0; i < arrTarget.length; i++){

? //find Row

? var row = arrSource.indexOf(arrTarget[i]);



? var numArr = shrinkLog.getRange(row+3,4,5).flat().filter(row=>row!="");


? //add units in an array

? var sum = numArr.reduce(function(a,b){return a+b;},0);


? //execute

? var testsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test Sheet");

? testsheet.getRange(i+1,1,1,1).setValue(sum);


}


查看完整回答
反對 回復 2023-04-27
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

您可以之前在陣列上運行 .map 并將任何null值替換為0.

var sum = numArr
              .map(e => e === null ? 0 : e)
              .reduce(function(a,b){return a+b;},0);


查看完整回答
反對 回復 2023-04-27
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號