Вы используете !== null
, чтобы проверить, отсутствуют ли overSerializeItems
и / или underSerializedItems
в ответе. Эта проверка будет ложной, потому что если они отсутствуют, вы получаете undefined
, а не null
, когда пытаетесь получить к ним доступ на объекте.
В обоих случаях, поскольку они отсутствуют или являются объектами, просто используйте item.overSerializedItems ?
охранник:
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems ?
item.overSerializedItems : [],
'Undershipment': item.underSerializedItems ?
item.underSerializedItems : []
}
console.log(obj);
}
или если вы указываете значение по умолчанию []
, если массив отсутствует, используйте ||
:
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems || [],
'Undershipment': item.underSerializedItems || []
}
console.log(obj);
}
Также обратите внимание, что нет смысла .toString()
на overshipid
и undershipid
; они уже строки. Но я все равно удалил это, так как вы пытались использовать .overshipid
и .undershipid
на массивах ; они не существуют как свойства для массивов, они существуют как свойства объектов в пределах массивов. (Удаление их также имеет значение по умолчанию []
.)
Live Пример:
const response = [{
"storeId": "2011",
"overSerializedItems": [{
"overshipid": "8901260932784148868F"
},
{
"overshipid": "8901260145723866348F"
},
],
"underSerializedItems": [],
},
{
"storeId": "2011",
"overSerializedItems": [],
"underSerializedItems": [{
"undershipid": "89"
},
{
"undershipid": "81"
},
],
}
];
for (const item of response) {
const obj = { // not JSON
'Store #': item.storeId,
'Overshipment': item.overSerializedItems || [],
'Undershipment': item.underSerializedItems || []
}
console.log(obj);
}
.as-console-wrapper {
max-height: 100% !important;
}