我使用以下代码调用API并返回结果:
api.jobs.all(function(response) {
const obj = response.data.map(function(item) {
return [item.id, item.billed.amountString];
});
});
使用以下JSON:
{
"data": [
{
"id": 2090170,
"deadline": null,
"jobId": {
"id": 1644
},
"billed": {
"amountString": 200,
"currencyType": "CAD"
}
},
{
"id": 2090171,
"deadline": null,
"jobId": {
"id": 1645
},
"billed": {
"amountString": 400,
"currencyType": "USD"
}
}]}
代码工作正常,大部分时间我都取得了良好的效果,但以下情况除外: billed.amountString
我一直收到以下错误:
TypeError:无法读取null
的属性'amountString'
有人能看出为什么会返回null吗?
此外,是否有一种方法可以循环API调用并强制它执行以下操作:
If .amountString === null, .amountString = "";
答案 0 :(得分:1)
var response = {
"data": [
{
"id": 2090170,
"deadline": null,
"jobId": {
"id": 1644
},
"billed": {
"amountString": 200,
"currencyType": "CAD"
}
},
{
"id": 2090171,
"deadline": null,
"jobId": {
"id": 1645
},
"billed": {
"amountString": 400,
"currencyType": "USD"
}
}]};
const obj = (response.data).map(function(item) {
return [item.id, item.billed.amountString];
});
console.log(obj);
答案 1 :(得分:0)
您可以使用库lodash
。 lodash方法get
可用于尝试和访问对象字段。如果它不存在,您可以指定默认返回值。请参阅https://lodash.com/。
// This will try to access item.billed.amountString
// If an item does not exist anywhere along the way
// it will return the default.
// _.get( OBJECT, PATH, DEFAULT )
_.get(item, ['billed', 'amountString'], '')