Вход

Просмотр полной версии : Тернарный оператор


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
'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