Документация Databird

Операторы сравнения и условия

Операторы сравнения

Оператор Обозначение Назначение
Равно X = Y Проверяет равны ли значения
Не равно X != Y Проверяет значения на неравенство друг-другу
Больше X > Y Проверяет действительно ли левое значение больше правого
Меньше X < Y Проверяет действительно ли левое значение меньше правого
Больше или равно X >= Y Проверяет действительно ли левое значение больше правого или равно ему
Меньше или равно X <= Y Проверяет действительно ли левое значение меньше правого или равно ему
Включение X in Y Проверяет включает ли правый элемент в себя левый

Подробнее о каждом операторе сравнения:

= (Равно) и != (Не равно) в JSONata

Оператор равенства (=) возвращает логическое значение true, если оба операнда одинаковы (тип и значение). Массивы и объекты проверяются на глубокое равенство. Массивы должны иметь одинаковые значения в одном и том же порядке. Объекты должны иметь одинаковые пары ключ/значение (порядок не имеет значения). В противном случае оператор возвращает логическое значение false.

Оператор неравенства (!=) возвращает логическое значение false, если оба операнда одинаковы (тип и значение, глубокое равенство). В противном случае он возвращает значение true.

Примеры:

  1. 5 = 5true
  2. [1, 2, 3] = [1, 2, 3, 4]false
  3. 10 != 10false
  4. “Hello” != “world”true

🧩 Официальная документация языка JSONata по = (равно) и != (не равно) на английском языке: http://docs.jsonata.org/comparison-operators#-equals

> (Больше) и < (Меньше) в JSONata

Оператор «больше, чем» (>) возвращает логическое значение true, если левое значение численно больше, чем правое. В противном случае оператор возвращает значение false.

Оператор «меньше, чем» (<) возвращает логическое значение true, если левое значение численно меньше, чем правое. В противном случае оператор возвращает значение false.

Примеры:

  1. 5 < 5.5true
  2. 6 < -6false
  3. 13 > 18false
  4. 1.2345 > 1.23true

🧩 Официальная документация языка JSONata по > (больше) и < (меньше) на английском языке: http://docs.jsonata.org/comparison-operators#-greater-than

>= (Больше или равно) и <= (Меньше или равно) в JSONata

Оператор «больше или равно» (>=) возвращает логическое значение true, если левое значение численно больше или равно правому. В противном случае оператор возвращает значение false.

Оператор «меньше или равно» (<=) возвращает логическое значение true, если левое значение численно меньше или равно правому. В противном случае оператор возвращает значение false.

Примеры:

  1. 141 <= 141true
  2. 5 <= 5.005false
  3. 45.678 >= 45.67true
  4. 24 >= 25false

🧩 Официальная документация языка JSONata по >= (больше или равно) и <= (меньше или равно) на английском языке: **http://docs.jsonata.org/comparison-operators#-greater-than-or-equals

in (Включение) в JSONata

Оператор включения массива/последовательности (in) возвращает логическое значение true, если левое значение включено в массив значений стоящий справа. В противном случае оператор возвращает значение false. Если правый элемент является единственным значением, то он обрабатывается как одноэлементный массив.

Примеры:

  1. 24 in [21, 22, 23, 24, 25]true
  2. [21, 25] in [21, 22, 23, 24, 25]false
  3. [21, 22] in [21, 22, 23, 24, 25]true
  4. “hi” in “hihello”false
  5. “hi” in “hi”true
  6. “hi” in [“hi”, “hello”]true

🧩 Официальная документация языка JSONata по in (включение) на английском языке: http://docs.jsonata.org/comparison-operators#in-inclusion

Логические операторы

Оператор Обозначение Назначение
Логическое И X and Y Проверяет являются ли оба значения истиной
Логическое ИЛИ X or Y Проверяет является ли хотя бы одно значение истиной

Подробнее о каждом логическом операторе:

and (логическое И) в JSONata

Оператор «логическое И» (and) возвращает логическое значение true, если оба операнда принимают значение true, в иных случаях возвращает false. Если один или оба операнда не являются логическим типом, то сначала они преобразуются в логическое значение, используя правила функции $boolean.

Примеры:

  1. true and truetrue
  2. true and false and truefalse
  3. “hi” = “hi” and 14 <= 15true
  4. 10 and [true, true, true]true
  5. true and $not(16 = 16)false

🧩 Официальная документация языка JSONata по and (логическое И) на английском языке: http://docs.jsonata.org/boolean-operators#and-boolean-and

or (логическое ИЛИ) в JSONata

Оператор «логическое ИЛИ» (or) возвращает логическое значение true, если хотя бы один из операндов принимает значение true. Если один или оба операнда не являются логическим типом, то сначала они преобразуются в логическое значение, используя правила функции $boolean.

Примеры:

  1. false or false or truetrue
  2. 1 != 1 or 13 < 0false
  3. “hi” or 13 - 13true
  4. 0 or 0false

🧩 Официальная документация языка JSONata по or (логическое ИЛИ) на английском языке: http://docs.jsonata.org/boolean-operators#or-boolean-or

Оператор условия

Оператор Обозначение Обозначение
Условие <условие> ? <истина> : <ложь> В зависимости от результата условия возвращает либо значение истины либо лжи

Подробнее об операторе условия:

? : (Условие) в JSONata

Условный оператор (? :) используется для вычисления одного из двух альтернативных выражений на основе результата условия предиката (теста, условия). Оператор принимает форму:

<условие> ? <истина> : <ложь>

Сначала вычисляется выражение <условие>. Если он принимает значение логической истины true, то оператор возвращает результат вычисления выражения <истина>. В противном случае он возвращает результат вычисления выражения <ложь>. Если <условие> вычисляется не как логическое значение, то значение сначала преобразуется в логическое с использованием правил функции $boolean.

Примеры:

  1. age >= 18 ? «Совершеннолетий»: «Несовершеннолетний»
  2. price > 999 ? «Дорогой» : «Дешевый»

🧩 Официальная документация языка JSONata по ? : (условие) на английском языке: http://docs.jsonata.org/other-operators#–conditional

при написании правил Databird

Примеры:

  1. Требуется присвоить наибольшую цену товару.

    Untitled

    📝 Атрибуту price (цена товара) присваем исходное поле price или oldPrice, в зависимости от того, какое из них больше.

  2. Найти значение скидки в рублях, если таковая имеется.

Untitled

  📝 Атрибуту discount (скидка) присваем разницу исходных полей oldPrice и price, если oldPrice больше, иначе присваиваем пустую строку.
  1. Взять из названия товара пол и присвоить соответствующему атрибуту.

Untitled

  📝 Атрибуту sex (пол) присваем значение строки в зависимости от того, какая подстрока имеется в атрибуте $A.productName. В данном примере реализованы вложенные друг в друга операторы условия. 

🔗 Подробнее о функциях $contain() и $A можно прочитать здесь:

Часто используемые функции