キーが見つからない場合にスローされる未定義エラーをスキップする方法を知りたいです。
[
{
"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 番目のオブジェクトに subThemes キーがないため、エラーが発生します。
const children = theme.subThemes
.map(subTheme => {
const { subThemes = [] } = aggregations;
...rest of the code}
TypeError: Cannot read property 'map' of undefined
未定義エラーを回避するにはどうすればよいですか?よろしくお願いします。
コードとエラーを投稿してください
– user969068
2020 年 9 月 3 日 11:04
map 関数を使用してどのように実装したかを示していただけますか?
– elpmid
2020 年 9 月 3 日 11:04
@user969068 が切り取ったコードを追加しました
– アディティヤ シュクラ
2020 年 9 月 3 日 11:07
条件付き連鎖 (theme.subThemes?.map(..)) を使用できます。
– イェヴヘン・ホルブンコフ
2020 年 9 月 3 日 11:08
@YevgenGorbunkov スロー構文エラー: 予期しないトークン
– アディティヤ シュクラ
2020 年 9 月 3 日 11:10
------------------------
それはどう聞こえますか?
if ( Array.isArray(myJson.languages))
myJson.languages.map(.....
または空の配列を返す場合 (ES6 構文)
(myJson.languages || []).map(x => { .... });
または、エラーを発生させずに未定義を返す場合 (ES6 構文)
myJson.languages?.map(x => { ... });
0