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

时间:2017-12-16 22:31:28

标签: google-apps-script google-sheets

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

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

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

      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"]]);
          }
       }

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

2 个答案:

答案 0 :(得分:1)

这次修改怎么样?请将此视为几个答案之一。我使用了forEachelem["Response"]。这样,值可以按elem["Response"]的数量推送。

来自:

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"]]);
  }
}

致:

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

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

答案 1 :(得分:0)

以下示例有助于说明响应[0]或响应[1]不是"未定义"或" null"。 Put!()将转换" undefined"的布尔值。或" null"为真。

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]);
  }
}