Возвращает значение переменной в условии if else

#javascript #if-statement

#javascript #if-оператор

Вопрос:

Я нахожусь на пути к созданию web с помощью TMDB WebAPI, но я обнаружил, что они используют разные переменные для сериалов и фильмов в разделе «тренды», «использование на телевидении» name и «использование в кино» title , так что это будет неопределенный параметр. Для такого новичка, как я, я выбираю использовать условие if else в функции с возвращаемым значением, но, похоже, оно все еще не работает.

 const renderTrending = (results) => {
    const listTrendingElement = document.querySelector("#trendingNow");
    listTrendingElement.innerHTML = "";
    results.forEach(result => {
        const combine;
        function _combine(){
            if(result.name===undefined){
                return combine = result.title;
            } else {
                return combine = result.name;
            }
        }
        _combine();
        listTrendingElement.innerHTML  = `
        <div class="col-2">
            <div class="card">
                <img class="card-img-top" src="${posterTMDB}w185${result.poster_path}" alt="Poster">
                <div class="card-body">
                    <h5 class="card-title">${combine}</h5>
                    <div>
                        <!-- <span class="genre">${result.genre_ids}</span>-->
                        <span class="media-type">${result.media_type}</span>
                    </div>
                </div>
            </div>
        </div>
        `;
    });
}
  

или, может быть, есть более эффективный способ сделать это?

Ответ №1:

Вы можете изменить функцию с помощью oneliner:

 const combine = result.name || result.title;
  

Таким образом, если result.name возвращает правильное значение, combine получает его; но если result.name не определено, combine получает значение из result.title

Комментарии:

1. Это опасно: || проверяет наличие ложных значений тоже, не только undefined . Оператор объединения null ?? является лучшим выбором (хотя и не так широко поддерживается). В противном случае используйте вместо этого тернарный оператор: return result.name === undefined ? result.title : result.name

2. @Terry name поле должно быть строкой, поэтому я лично согласен с вашим инструктивным представлением, но логический оператор-or должен соответствовать цели без проблем в этом случае.

3. @Terry по той же причине вам следует исправить свое предложение, чтобы предотвратить null также.

4. да @MarioVernari это специфично для TMDB WebAPI, а не общий совет

5. спасибо, ребята, я узнаю о логическом операторе. хорошего дня!