Javascript .filter() -> не может прочитать свойство 'X' из null

есть ли лучший способ написать эту строку?

var tracks = responseJSON.items.map((item) => item.track).filter((item) => item.preview_url != null)

Я часто получаю эту ошибку: "TypeError: Cannot read property 'preview_url' of null"

Я предполагаю, что это происходит из-за того, что .map() вернул пустой массив, но если бы это было так, не сделал бы filter() просто то же самое?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
155
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, трек иногда 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);

Ух ты! Как iOS-разработчик! Очень рад узнать, что в JS есть необязательная цепочка! Я чувствовал себя избалованным Свифтом

degenPenguin 25.12.2020 00:48

Просто проверьте, что item и item.preview_url не равны нулю.

var tracks = responseJSON.items.map(item => item.track).filter(item => item != null && item.preview_url != null)

Другие вопросы по теме