Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Тернарный оператор (https://javascript.ru/forum/misc/83887-ternarnyjj-operator.html)

rashhin 13.04.2022 12:58

Тернарный оператор
 
Не уверен, что пишу по адресу, но надеюсь, что кто-то подскажет.
В коде скрипта на NodeJS есть строка с условием:

const user = order.shippingMethod === 'wbfbs' ? 'sales' : 'lg';


Добавилось еще одно значение и решили дополнить условие через "или":

const user = order.shippingMethod === 'aliexpress' || 'wbfbs' ? 'sales' : 'lg';


Но ничего не поменялось. Почему? Как правильно задать условие для выбора 'sales', если order.shippingMethod равен 'wbfbs' или 'aliexpress'?

рони 13.04.2022 13:20

Цитата:

Сообщение от rashhin
'aliexpress' || 'wbfbs'

(в скобки круглые обернуть это)

rashhin 13.04.2022 13:34

спасибо, пробуем.

рони 13.04.2022 13:39

rashhin,
const user = (order.shippingMethod === 'aliexpress' ||order.shippingMethod ==='wbfbs') ? 'sales' : 'lg';

rashhin 13.04.2022 14:17

чтото ни так - ни так не срабатывает(
'wbfbs' - правильно
'aliexpress' - не срабатывает

рони 13.04.2022 14:28

rashhin,
что не так?
const user = order => (order.shippingMethod === 'aliexpress' ||order.shippingMethod ==='wbfbs') ? 'sales' : 'lg';
alert([{shippingMethod : 'aliexpress'}, {shippingMethod : 'test'}, {shippingMethod : 'wbfbs'}].map(user));

Белый шум 13.04.2022 15:21

Так компактнее:
var user = order => ['aliexpress', 'wbfbs'].indexOf(order.shippingMethod) >= 0 ? 'sales' : 'lg';
alert([{shippingMethod : 'aliexpress'}, {shippingMethod : 'test'}, {shippingMethod : 'wbfbs'}].map(user));

Особенно, если строк для сравнения станет больше.

рони 13.04.2022 15:47

Цитата:

Сообщение от Белый шум
.indexOf(order.shippingMethod) >= 0

можно
.includes(order.shippingMethod)

Белый шум 13.04.2022 15:54

рони,
да, но поддержка браузерами похуже: https://caniuse.com/array-includes


Часовой пояс GMT +3, время: 20:20.