Как сделать переменные необязательными при конкатенации строки? - PullRequest
0 голосов
/ 27 сентября 2019

Я манипулирую строкой для отображения в пользовательском интерфейсе. Иногда данные динамически обрабатываются с помощью приведенного ниже кода, иногда я не получаю header и details, поэтому как сделать IHeader и IResponse необязательными для объединения строк ниже.

если у меня нет IHeader, он сломается на IHeader.id и выдаст исключение, я хочу отобразить все доступные данные для рендеринга.

main.js

const data = [{
    id: "header",
    name: "IHeader"
}, {
    id: "param",
    name: "IParams"
}, {
    id: "details",
    name: "IResponse"
}]

function buildText(data) {
    var IParams;
    var IResponse;
    var IHeader;
    for (var item of data) {
        if (item.id === "param") {
            IParams = item;
        } else if (item.id === "header") {
            IHeader = item;
        } else if (item.id === "details") {
            IResponse = item;
        }
    }
    var text = '';
    text += app + '.setConfig({\n' + "env:" + getEnv() + '\n});' + '\n\n';
    text += 'let param:' + IParams.name + ' ' + '=' + '' + JSON.stringify(request, null, 4) + ';\n\n';
    text += ref + '(' + 'param,(result:' + ' ' + '{' + '\n' + IHeader.id + ':' + IHeader.name + '\n' + IResponse.id + ':' + IResponse.name + '\n' + '})' + ' ' +
        ' => {\n  console.log(result); \n});';

}

1 Ответ

0 голосов
/ 27 сентября 2019

1 - Вы можете попытаться создать объект с пустыми значениями.Это предотвратит исключение.

   emptyObject = {id: ""} // more empty keys, if there is
   IParam = (item.id === "param") ? item : emptyObject

2 - Или игнорируйте эту конкатенацию переменной, если undefined или null.

if (Iparam) {
    // concatenation ..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...