Перейти к основному содержимому
Версия: 2.0 (WIP)

Функции массивов

$count()

Сигнатура: $count(array)

Возвращает число элементов параметра array. Если параметр не является массивом, а имеет другой JSON-тип, он рассматривается как одноэлементный массив с этим значением, и функция возвращает 1.

Если array не указан, используется значение контекста.

Примеры:

  • $count([1,2,3,1]) => 4
  • $count("hello") => 1

$append()

Сигнатура: $append(array1, array2)

Возвращает массив со значениями array1, за которыми следуют значения array2. Если любой параметр не является массивом, он рассматривается как одноэлементный массив с этим значением.

Примеры:

  • $append([1,2,3], [4,5,6]) => [1,2,3,4,5,6]
  • $append([1,2,3], 4) => [1,2,3,4]
  • $append("Hello", "World") => ["Hello", "World"]

$sort()

Сигнатура: $sort(array [, function])

Возвращает значения array, отсортированные по порядку. Если function не передана, array должен содержать только числа или только строки; они сортируются соответственно по возрастанию числа либо кодовой точки Unicode.

Функция-компаратор должна принимать два параметра: function(left, right). Алгоритм вызывает её для сравнения left и right. Если left должен оказаться после right, функция должна вернуть true, обозначая обмен; иначе — false.

$sort(Account.Order.Product, function($l, $r) {
$l.Description.Weight > $r.Description.Weight
})

Этот пример сортирует продукты по возрастанию веса. Алгоритм стабилен: равные по компаратору значения сохраняют исходный порядок.

$reverse()

Сигнатура: $reverse(array)

Возвращает массив со всеми значениями array в обратном порядке.

Примеры:

  • $reverse(["Hello", "World"]) => ["World", "Hello"]
  • [1..5] ~> $reverse() => [5, 4, 3, 2, 1]

$shuffle()

Сигнатура: $shuffle(array)

Возвращает массив со всеми значениями array, перемешанными в случайном порядке.

Пример: $shuffle([1..9]) => [6, 8, 2, 3, 9, 5, 1, 4, 7]

$distinct()

Сигнатура: $distinct(array)

Возвращает значения array без повторов. Равенство значений проверяется глубоким сравнением, как оператором равенства.

Примеры:

  • $distinct([1,2,3,3,4,3,5]) => [1, 2, 3, 4, 5]
  • $distinct(Account.Order.Product.Description.Colour) => [ "Purple", "Orange", "Black" ]

$zip()

Сигнатура: $zip(array1, ...)

Возвращает свёрнутый (zip) массив сгруппированных массивов значений из аргументов array1arrayN с индексами 0, 1, 2 и далее. Функция принимает переменное число аргументов. Длина результата равна длине самого короткого входного массива.

Примеры:

  • $zip([1,2,3], [4,5,6]) => [[1,4] ,[2,5], [3,6]]
  • $zip([1,2,3],[4,5],[7,8,9]) => [[1,4,7], [2,5,8]]