я могу вернуть ответ на операторы else / if, не назначая переменную? - PullRequest
1 голос
/ 28 октября 2019

Я создал массив с объектами фильма, которые повторяют и распечатывают результаты, основываясь на просмотре или не просмотре (если / еще).

movies.forEach(function(arr){

    let answer = "you have "; <-- (omit this variable)
    if (arr.hasWatched) {
        answer += "watched ";  <-- (instead type: "you have watched ";)
    }
    else {
        answer += "not seen ";
    }
    answer += "\"" + arr.title + "\" - " + arr.rating + " stars";

    console.log (answer);
});

мой вопрос: могу ли я получить ответ на оператор if без создания переменной: answer? если да, то как мне распечатать заявление?

Ответы [ 3 ]

3 голосов
/ 28 октября 2019

Вы можете уничтожить объект и взять шаблонный литерал для нужного текста.

Для получения альтернативы вы можете использовать условное выражение (троичный) оператор ?:.

movies.forEach(({ hasWatched, title, rating }) => {
    console.log(`you have ${hasWatched ? "watched" : "not seen"} "${title}" ${rating} stars`);
});
0 голосов
/ 28 октября 2019

Есть два способа сделать что-то условно: один - оператор if , а другой - троичное выражение . В последнем случае вам вообще не нужна переменная:

 console.log( 
    "you have " +
   (arr.hasWatched ? "watched " : "not seen ") + // << ternary
   "\"" + arr.title + "\" - " + arr.rating + " stars"
 );

Но я не вижу никаких проблем с этой переменной, читаемость явно лучше.

0 голосов
/ 28 октября 2019

Вы можете использовать троичный оператор следующим образом:

let answer = "you have " + (arr.hasWatched ? "watched " : "not seen ");

Теоретически, вы можете сделать довольно длинный console.log, чтобы полностью избежать переменной:

console.log("you have " + (arr.hasWatched ? "watched " : "not seen ") + "\"" + arr.title + "\" - " + arr.rating + " stars")

Однако этоне очень читабельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...