忽略数组数组中的未定义对象变量

问题描述 投票:1回答:2

在Google Apps脚本中,我从API中提取数据。在下面的代码中,“output”变量包含一个数组数组。总是至少有一个[“Response”]对象,但有时候有2个。

我的问题是,当它存在时,下面的代码不会返回第二个对象([“Response”] [1])。我尝试删除“if”语句,但是我收到一条错误,说“TypeError:无法读取属性”产品“来自undefined”。

有没有人知道如何获得第二个对象,当它不存在时忽略它?

      var data = reportAPI();
      var applications = data["applications"];
      var output = []

      applications.forEach(function(elem,i) {
        output.push(["ID",elem["Id"]]);
        output.push([elem["Response"][0]["Product"],elem["Response"][0]["Status"]]);
          if (["Response"][1] != null) {
            output.push([elem["Response"][1]["Product"],elem["Response"][1]["Status"]]);
          }
       }

附:我甚至很高兴用“”替换未定义的对象,但我不知道该怎么做。

google-apps-script google-sheets
2个回答
1
投票

这个修改怎么样?请将此视为几个答案之一。我用forEachelem["Response"]。这样,值可以通过elem["Response"]的数量来推动。

From :

applications.forEach(function(elem,i) {
  output.push(["ID",elem["Id"]]);
  output.push([elem["Response"][0]["Product"],elem["Response"][0]["Status"]]);
  if (["Response"][1] != null) {
    output.push([elem["Response"][1]["Product"],elem["Response"][1]["Status"]]);
  }
}

To :

applications.forEach(function(elem) {
  output.push(["ID",elem["Id"]]);
  elem["Response"].forEach(function(elem2) {
    output.push([elem2["Product"],elem2["Status"]]);
  });
});

如果这不起作用,请告诉我。我想修改。


0
投票

以下示例有助于说明Response [0]或Reponse [1]不是“undefined”或“null”的情况。 Put!()会将“undefined”或“null”的布尔值变为true。

applications.forEach(function(elem,i) {
  output.push(["ID",elem.Id]);
  if(!(elem.Reponse[0]))
    output.push([elem.Response[0].Product,elem.Response[0].Status]);
  if (!(elem.Response[1])) {
    output.push([elem.Response[1].Product,elem.Response[1]Status]);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.