Тернарный оператор в шаблоне строки - PullRequest
0 голосов
/ 03 июня 2018

Существует компактный способ создать строку с необязательными параметрами, такими как этот?

let q = `CREATE "a"
            ${this.date ? ` SET date = '${this.date}'` : ''}
            ${this.description ? ` SET description = '${this.description}'` : ''}
            RETURN n`;

без этого else случая, возвращающего пустую строку ''?

Редактировать: Текущие результаты:

CREATE "a"


RETURN n

Это просто эстетическая проблема, я бы предпочел не иметь этих пустых строк


Использование логического оператора && hasnне работает (возвращает undefined в виде строки):

${this.date && ` SET date = '${this.date}'`}

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы можете использовать условие && значение ||"" , но это почти эквивалентно использованию троичного оператора.

Другой доступный вариант - попробовать помеченный шаблон , который отбрасывает пустые значения:

    let date;
    let description = "description";

    function nonEmpty(parts) {
        var res = parts[0];
        for (var i=1; i<parts.length; i++) {
            if (arguments[i]) // you might want to handle `0` different
                res += arguments[i];
            res += parts[i];
        }
        return res;
    }

    console.log(nonEmpty`Date :: ${date} and Description :: ${description}`);
0 голосов

Вы открываете '`', уже не можете использовать его посередине.

let q = `CREATE "a"
            ${this.date ? SET date = '${this.date}' : ''}
            ${this.description ? SET description = '${this.description}' : ''}
            RETURN n`;

Или используйте:

let date = this.date ? "SET date = '${this.date}'" : '';
let description = this.description ? "SET description = ${this.description}" : '';

 let q = `CREATE "a"
                ${date}
                ${description}
                RETURN n`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...