#javascript #json #reactjs
#javascript #json #reactjs
Вопрос:
Я хотел бы знать, как мы можем пропустить неопределенную ошибку, возникающую, если отсутствует ключ.
[
{
"id": "foo1",
"name": "Test1",
"description": "random test1",
"languages": [
"en"
],
"subThemes": [
{
"id": "1",
"name": "Bike"
},
{
"id": "2",
"name": "Testy",
"description": "Testing this thing1"
}
]
},
{
"id": "foo2",
"name": "Test",
"description": "random test2",
"languages": [
"en"
],
"subThemes": [
{
"id": "3",
"name": "Bike2"
},
{
"id": "4",
"name": "Testy2",
"description": "Testing this thing2"
}
]
},
{
"id": "foo3",
"name": "Test3",
"description": "random test3",
"languages": [
"en"
]
}
]
Допустим, у меня есть объект массива, подобный этому выше, если я создам над ним карту, это выдаст мне ошибку, потому что у меня нет ключа подтемы в 3-м объекте.
const children = theme.subThemes
.map(subTheme => {
const { subThemes = [] } = aggregations;
...rest of the code}
TypeError: Cannot read property 'map' of undefined
Как мне обойти неопределенную ошибку? Заранее спасибо.
Комментарии:
1. опубликуйте свой код и ошибку
2. можете ли вы показать, как вы реализовали это с помощью функции map?
3. Добавлен сокращенный код @user969068
4. Вы можете использовать условную цепочку (
theme.subThemes?.map(..
)5. @EVGENGORBUNKOV Выдает синтаксическую ошибку: неожиданный токен
Ответ №1:
как это звучит?
if ( Array.isArray(myJson.languages))
myJson.languages.map(.....
или для возврата пустого массива (синтаксис ES6)
(myJson.languages || []).map(x => { .... });
или для возврата неопределенного без ошибки (синтаксис ES6)
myJson.languages?.map(x => { ... });