在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。我甚至很高兴用“”替换未定义的对象,但我不知道该怎么做。
答案 0 :(得分:1)
这次修改怎么样?请将此视为几个答案之一。我使用了forEach
来elem["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]);
}
}