TransWikia.com

Как корректно вставить условие?

Stack Overflow на русском Asked by xakslim on December 14, 2020

Получаю ответ от сервера и на его основе выводу на страницу результаты поиска. в значениях может приходить null. Если приходит null, то на странице нужно вывести пустой блок. Пробовал прописать тернарный оператор для ip – получаю абракадабру на странице. Как правильно описать условие?

if (response.length > 0) {
        response.forEach(function (item) {
          resulList += '<div class="table-row" data-id="' + item.id + '">' +
            '<div class="table-cell"><input type="checkbox" name=""></div>' +
            '<div class="table-cell">' + item.full_name + '</div>' +
            '<div class="table-cell">' + item.category__name + '</div>' +
            '<div class="table-cell">' + (item.ip) ? item.ip : "" + '</div>' +
            '<div class="table-cell">' + item.domain_name + '</div>' +
            '<div class="table-cell">' + item.hardware_purpose + '</div></div>';
        })
      }

2 Answers

Выучить приоритеты операторов https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

Ваши строки

... +
'<div class="table-cell">' + (item.ip) ? item.ip : "" + '</div>' +
...

эквивалентны

(... + '<div class="table-cell">' + item.ip) ? (item.ip) : ("" + '</div>' + ...)

А вам надо написать

'<div class="table-cell">' + (item.ip ? item.ip : "") + '</div>' +
// или даже проще
'<div class="table-cell">' + (item.ip || "") + '</div>' +

Correct answer by Alexey Ten on December 14, 2020

Если я правильно понял вашу проблему, то вам нужно вот эту часть кода (item.ip) ? item.ip : "" заменить на (item.ip || "") (тут тернарный не нужен), так как этим враппом в выражение вы четко указываете приоритет выполнения, а на данный момент у вас происходит изначальное вычисление всего до знака ?, становится условием истинности и выводит результат вычисления item.ip + всё после окончания тернарного оператора.

Answered by Максим Вишневский on December 14, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP