Я пытаюсь распечатать таблицу с некоторыми данными JSON, но не могу отобразить пустой массив, когда использую метод карты.
ДАННЫЕ JSON:
[{
"id": 6,
"firstname": "Sharon",
"lastname": "Jenkins",
"specialties": []
}, {
"id": 2,
"firstname": "Helen",
"lastname": "Leary",
"specialties": [{
"id": 1,
"name": "radiology"
}]
}, {
"id": 4,
"firstname": "Rafael",
"lastname": "Ortega",
"specialties": [{
"id": 2,
"name": "surgery"
}]
}, {
"id": 5,
"firstname": "Henry",
"lastname": "Stevens",
"specialties": [{
"id": 1,
"name": "radiology"
}]
}]Мой код:
{this.state.vets.map(vet =><tr><td>{vet.firstname}</td>
{
vet.specialties.map((subitem,i) => {
return <td>{subitem.name}</td> })}<td>EDIT</td><td id = {vet.firstname}><div class = "funkyradio">Теперь я получаю следующую ошибку

Поскольку у Шэрон нет специалиста, мне нужно указать N/A.
Как я могу проверить, что специальности пусты, и вывести N/A.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


используйте условный оператор, подобный этому
{ this.state.vets.length > 0
? this.state.vets.map(()=>Your logic)
: <Your custom message/>
}
В основном для удобства чтения вместо использования свойства объекта я бы создал отдельную функцию, которая будет возвращать особенности, если таковые имеются, иначе N/A
попробуйте отображать всегда тег TD, например:
{
this.state.vets.map(vet =>
<tr>
<td>{vet.firstname}</td>
<td>
{vet.specialties.map((subitem,i) => {
return <span>{subitem.name}</span>
})}
</td>
<td>EDIT</td>
<td id = {vet.firstname}>
<div class = "funkyradio">
<table>
{dataJSON.map(({ id, firstname, lastname, specialties }) => {
return (
<tr>
<td> {`${firstname} ${lastname}`} </td>
<td> {specialties.map(specialty => specialty.name).join(",")} </td>
<td> <span> EDIT </span> </td>
</tr>
);
})}
</table>
Это происходит потому, что массив специальностей вашего первого объекта пуст, поэтому вторая функция карты не выполняет итерацию по этому полю.