I have the following loop which calls an api and pushes data to an array, the issue is that the API is returning empty values for certain attributes i.e "primaryTag": null
and is breaking my code, how can I handle it to place a static value if any of the values are null?
for (var a in audience) {
var aId = audience[a];
var url = base '?' query '&AudienceId=' aId
var req = new HttpClientRequest(url);
req.header["Content-Type"] = "application/json"
req.method = "GET"
req.execute();
var resp = req.response;
if( resp.code != 200 )
throw "HTTP request failed with " resp.message
var posts = JSON.parse(resp.body)
logInfo(resp.code ' ' url);
for (i = 0; i < 11; i ) {
articlesList_json.push({
"title":posts[i].title,
"pubDate":posts[i].publishedDate,
"link":posts[i].url,
"imageURL":posts[i].imageUrl,
"description": posts[i].description,
"category": posts[i].category.name,
"audience": posts[i].audience.name '-' posts[i].audience.id,
"tag": posts[i].primaryTag.name,
"episerverId":posts[i].episerverId,
});
}
}//for loop end
CodePudding user response:
Have a look at optional chaining
"tag": posts[i].primaryTag?.name ?? "N/A"
Alternatively use a ternary:
"tag": posts[i].primaryTag ? posts[i].primaryTag.name : "N/A"
CodePudding user response:
Values like null, undefined, empty Strings, 0 and NaN evaluated as false in Javascript.
You can check if the value is not null with an if condition
if(value) {
// value is not null
// do something with the value
}
In your example u can use a ternary expression to check this in place
for (i = 0; i < 11; i ) {
articlesList_json.push({
// check if value is not falsy and provide a default when it is
"title":posts[i].title ? posts[i].title : "no value",
// ...
});
}
check https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator for more information