есть ли лучший способ написать эту строку?
var tracks = responseJSON.items.map((item) => item.track).filter((item) => item.preview_url != null)
Я часто получаю эту ошибку: "TypeError: Cannot read property 'preview_url' of null"
Я предполагаю, что это происходит из-за того, что .map()
вернул пустой массив, но если бы это было так, не сделал бы filter()
просто то же самое?
Похоже, трек иногда null
, поэтому отфильтруйте элементы без треков, прежде чем пытаться получить доступ к его свойству, что можно сделать кратко с помощью дополнительной цепочки:
const tracks = responseJSON.items
.map(item => item.track)
.filter(item => item?.preview_url != null);
Или:
const tracks = responseJSON.items
.map(item => item.track)
.filter(item => item && item.preview_url != null);
Просто проверьте, что item
и item.preview_url
не равны нулю.
var tracks = responseJSON.items.map(item => item.track).filter(item => item != null && item.preview_url != null)
Ух ты! Как iOS-разработчик! Очень рад узнать, что в JS есть необязательная цепочка! Я чувствовал себя избалованным Свифтом