v — текущий элемент
Используется в Filter, Map и других трансформерах
.Filter("v > 0")
.Filter("v.Активен")
.Map("v * 2")
.Map("v.Наименование")
A1sAR.On(ВсеТовары)
.Filter("v.Цена > 1000")
.Map("v.Наименование")
.Sort()
.Take(10)
.Value()
v — текущий элементИспользуется в Filter, Map и других трансформерах
.Filter("v > 0")
.Filter("v.Активен")
.Map("v * 2")
.Map("v.Наименование")
acc — аккумуляторИспользуется в Reduce для накопления результата
.Reduce("acc + v", 0)
.Reduce("acc * v", 1)
.Reduce("Макс(acc, v)", 0)
.Filter(Expression)Оставляет только элементы, удовлетворяющие условию.
A1sAR.On(Числа).Filter("v > 0").Value()
A1sAR.On(Товары).Filter("v.Активен И v.Цена > 100").Value()
A1sAR.On(Строки).Filter("СтрДлина(v) > 3").Value()
.Map(Expression)Преобразует каждый элемент массива.
A1sAR.On(Числа).Map("v * 2").Value()
A1sAR.On(Товары).Map("v.Наименование").Value()
A1sAR.On(Строки).Map("ВРег(v)").Value()
.Sort() / .Reverse()Сортировка и разворот массива.
A1sAR.On(Числа).Sort().Value() // [1, 2, 3, 4, 5]
A1sAR.On(Числа).Sort().Reverse().Value() // [5, 4, 3, 2, 1]
.Unique()Оставляет только уникальные элементы.
A1sAR.On(A1sAR.Of(1, 2, 2, 3, 3, 3)).Unique().Value()
// [1, 2, 3]
.Take(N) / .Skip(N)Взять первые N / Пропустить первые N элементов. Идеально для пагинации.
// Пагинация: страница 3, по 20 элементов
A1sAR.On(Данные).Skip(40).Take(20).Value()
.Slice(Start, End)Вырезает срез массива по индексам.
A1sAR.On(A1sAR.Of(0, 1, 2, 3, 4, 5)).Slice(2, 4).Value()
// [2, 3]
.Union() / .Intersection() / .Difference()Set-операции в цепочке.
A1sAR.On(А).Union(Б).Difference(В).Value()
.PickNumbers() / .PickStrings() / ...Фильтрация по типам данных в цепочке.
A1sAR.On(Смешанный).PickNumbers().Filter("v > 0").Value()
.Value()Возвращает итоговый массив.
.First() / .Last()Первый / Последний элемент результата.
Первый = A1sAR.On(Данные).Filter("v > 100").First();
.Count()Количество элементов в результате.
Кол = A1sAR.On(Данные).Filter("v.Активен").Count();
.Total() / .Avg() / .Minimum() / .Maximum()Агрегатные функции для числовых массивов.
Сумма = A1sAR.On(Цены).Total();
Среднее = A1sAR.On(Цены).Avg();
.Reduce(Expression, InitialValue)Свёртка массива с произвольной функцией. Использует переменные acc (аккумулятор) и v (элемент).
// Сумма
Сумма = A1sAR.On(Числа).Reduce("acc + v", 0);
// Произведение
Произв = A1sAR.On(Числа).Reduce("acc * v", 1);
// Максимум
Макс = A1sAR.On(Числа).Reduce("?(acc > v, acc, v)", 0);
// Конкатенация строк
Строка = A1sAR.On(Слова).Reduce("acc + "" "" + v", "");
.Join(Separator)Объединяет элементы массива в строку с разделителем.
Строка = A1sAR.On(Имена).Join(", ");
// "Иван, Пётр, Сидор"
.Contains(Value) / .IndexOf(Value)Проверка наличия и поиск индекса в результате цепочки.
.GroupByType()Группировка элементов по типам данных.
// Обработка продаж: активные, с суммой > 10000, топ-5
Топ5 = A1sAR.On(ВсеПродажи)
.Filter("v.Статус = 'Завершена'")
.Filter("v.Сумма > 10000")
.Map("A1sDS.Of('Клиент', v.Клиент, 'Сумма', v.Сумма)")
.Sort()
.Reverse()
.Take(5)
.Value();
// Статистика
ОбщаяСумма = A1sAR.On(ВсеПродажи)
.Filter("v.Статус = 'Завершена'")
.Map("v.Сумма")
.Total();
СредняяСумма = A1sAR.On(ВсеПродажи)
.Filter("v.Статус = 'Завершена'")
.Map("v.Сумма")
.Avg();