If statement 如果在Google应用程序脚本中未检测到Else条件

If statement 如果在Google应用程序脚本中未检测到Else条件,if-statement,google-apps-script,If Statement,Google Apps Script,我在列表“res_1”上循环,当Id为“400”时,需要将“Total_Weight”与变量“cost_400”相乘;否则,如果id为“400W”,则需要乘以“总重量” 具有可变“成本_400W”。最后,“结果”数组应该包含“供应商”和相应的编码(“总重量”*“成本400”) 在下面的代码中,我循环了“res_1”,但由于某种原因,没有检测到if条件,它也没有进入相应的if或else if条件。 如有任何建议,将不胜感激 预期结果: result = [['ABC',42341820 ],['D

我在列表“res_1”上循环,当Id为“400”时,需要将“Total_Weight”与变量“cost_400”相乘;否则,如果id为“400W”,则需要乘以“总重量” 具有可变“成本_400W”。最后,“结果”数组应该包含“供应商”和相应的编码(“总重量”*“成本400”)

在下面的代码中,我循环了“res_1”,但由于某种原因,没有检测到if条件,它也没有进入相应的if或else if条件。 如有任何建议,将不胜感激

预期结果:

result = [['ABC',42341820 ],['DEF',91734000]]
输入:

res_1:

[ { Id: '400 ', Vendor: 'ABC', Total_Weight: 32322 },
  { Id: '400W ', Vendor: 'DEF', Total_Weight: 61156 } ]

var cost_400 = 1310
var cost_400W = 1500

res_1.forEach((r2,i2)=>{
  if (r2['Id'] == "400" ) {
    Logger.log(r2['Total_Weight']*cost_400)
  }
  else if (r2['Id'] == "400W" ) {
    Logger.log(r2['Total_Weight']*cost_400W)
  }
});

问题:

  • res_1上的额外空间
    if(r2['Id']=“400”)
    if(r2['Id']=“400W”)
    将始终为false,因为
    '400'
    不等于
    '400'
    '400W'
    不等于
    '400W'
  • 解决方案:

  • 如果无法操作res的输出,可以使用
    String.match()
    并反转If-else语句。反转的原因是
    String.match(400)
    可以捕获
    400
    400W
    ,如果我们从String.match('400W')开始,我们可以阻止该方法捕获
    400
  • 您的代码应该如下所示:

    function myFunction() {
      var res_1=
      [ { Id: '400 ', Vendor: 'ABC', Total_Weight: 32322 },
        { Id: '400W ', Vendor: 'DEF', Total_Weight: 61156 } ]
    
      var cost_400 = 1310
      var cost_400W = 1500
    
      res_1.forEach((r2,i2)=>{
        if (r2['Id'].match("400W")) {
          Logger.log(r2['Total_Weight']*cost_400W)
        }
        else if (r2['Id'].match("400")) { 
          Logger.log(r2['Total_Weight']*cost_400)
        }
      });
    }
    
    输出:

    参考资料:


    你的意思是
    res_1=[{Id:'400',供应商:'ABC',总重量:32322},{Id:'400W',供应商:'DEF',总重量:61156}]?每个Id的末尾似乎有一个空格。