![](/img/trans.png)
[英]If statement within a for loop within a for loop - condition isn't being met
[英]Sum arrays if a condition is met within a loop
我正在使用下面的代碼來創建一個表。 它工作正常。
我的最終目標是為“取消優先級”添加小計。 因為我已經在循環表格,所以我想利用現有的循環。 (不循環數組中的每個值,恐怕會減慢代碼速度)
例如如果我的表是:
[A,de-prioritized,2,1,0,0,1],
[B,de-prioritized,0,2,1,1,0],
[C,other,0,5,2,1,1]
我想得到:[2,3,1,1,1](作為 [2,1,0,0,1]+[0,2,1,1,0] 的總和)。
換句話說:假設我有一張桌子 A1:F10。 在 A 中有一個標志(無論是否“取消優先級”),而在 B1:F10 中有值。 我想在每一列中復制公式: SUMIF(A1:A10,"de-prioritized",B1:B10),SUMIF(A1:A10,"de-prioritized",C1:C10),SUMIF(A1:A10, “去優先級”,D1:D10)等等。 我無法設置公式,因為上面示例中的范圍是動態的。 我嘗試在腳本中使用 sumif 設置公式 R1C1,但它不起作用。
我發現了一個類似的問題,但我可能有 n arrays 求和,我無法在我的解決方案中擬合: Javascript - 在單次迭代中求和兩個 arrays
我現有的代碼:
var l = sheet2.getRange('A1').getValue();
for (var i = 0; i<l ;i++) {
if (sheet3.getRange(i+3,2).getValue() == 'de-prioritized') {
sheet3.getRange(i+3,1,1,sheet3.getLastColumn()).setBackgroundRGB(250, 240, 230);
} else sheet3.getRange(i+3,1,1,sheet3.getLastColumn()).setBackgroundRGB(225, 247, 232)
}
[2,3,1,1,1]
[["A","de-prioritized",2,1,0,0,1],["B","de-prioritized",0,2,1,1,0],["C","other",0,5,2,1,1]]
使用 Google Apps 腳本。const arr = [["A","de-prioritized",2,1,0,0,1],["B","de-prioritized",0,2,1,1,0],["C","other",0,5,2,1,1]];
const res = arr.reduce((ar, [,b,...cdefg]) => {
if (b == "de-prioritized") ar = ar.length > 0 ? ar.map((e, i) => e + cdefg[i]) : cdefg;
return ar;
}, []);
console.log(res) // <--- [2,3,1,1,1]
const arr = [["A","de-prioritized",2,1,0,0,1],["B","de-prioritized",0,2,1,1,0],["C","other",0,5,2,1,1]]; const res = arr.reduce((ar, [,b,...cdefg]) => { if (b == "de-prioritized") ar = ar.length > 0? ar.map((e, i) => e + cdefg[i]): cdefg; return ar; }, []); console.log(res)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.