Как сортировать list?
Например, чтобы обеспечить последовательнй порядок значений в списке, сложенном из двух списков:
=: listSort(list: $list; type: "string"; direction: "asc")
list: listAdd(list: $list_1; list: $list_2)
list_1: selectList(table: 'table_1'; field: 'unical_number'; where: 'status' != "")
list_2: selectList(table: 'table_2'; field: 'unical_number'; where: 'status' != "")
// Обратите внимание, что в type надо указать тип значений, а в direction направление сортировки.
Такой случай возможен, но избыточен:
=: listSort(list: $list; type: "number"; direction: "asc")
list: selectList(table: 'table'; field: 'unical_number'; where: 'status' != "")
// Здесь сначала работает база данных, а потом web-сервер
Лучше так:
=: selectList(table: 'table'; field: 'unical_number'; where: 'status' != ""; order: 'unical_number' asc)
// Здесь работает только база данных
Как сортировать rowlist?
В этом случае есть два дополнительных параметра. В key
мы указываем что используем item
, а в item
— какой именно.
=: listSort(list: $rowlist; type: "number"; direction: "asc"; key: "item"; item: "price")
rowlist: selectRowList(table: 'table'; field: 'num'; field: 'price'; where: 'status' = 4)
Но на самом деле можно указать наименоватие item
прямо в параметре key
:
=: listSort(list: $rowlist; type: "number"; direction: "asc"; key: "price")
rowlist: selectRowList(table: 'table'; field: 'num'; field: 'price'; where: 'status' = 4)
Как отфильтровать list?
Очень похожая на сортировку функция listFilter.
=: listFilter(list: $list; key: "value" > 1000)
list: selectList(table: 'table'; field: 'price')
В key
для list
можно выбрать, фильтровать по значениям — value
или по ключам — key
.
Как отфильтровать rowlist?
Указываем в key
колонку, по которой будем фильтровать:
=: listFilter(list: $rowlist; key: "price" > 1000)
rowlist: selectRowList(table: 'table'; field: 'num'; field: 'price'; where: 'status' = 4)
Можно ли отфильтровать список по нескольким условиям?
Это делается последовательно:
=: listFilter(list: $filter_1; key: "type" = 2)
filter_1: listFilter(list: $rowlist; key: "price" > 1000)
rowlist: selectRowList(table: 'table'; field: 'type'; field: 'price'; where: 'status' = 4)
Или используя множественный параметр key
(этот вариант быстрее):
=: listFilter(list: $rowlist; key: "price" > 1000; key: "type" = 2)
rowlist: selectRowList(table: 'table'; field: 'type'; field: 'price'; where: 'status' = 4)
Сохраняются ли ключи list при его сортировке?
Нет. Получается новый list
у которого ключи идут от 0
.
Сохраняются ли ключи list при его фильтрации?
Нет. Получается новый list
у которого ключи идут от 0
.
В каких случаях важно использовать skip: true при работе с rowList?
Если у вас неоднородный rowlist и в какой-то из строк нет ключа по которому осуществляется фильтрация, то функция вернет ошибку.
skip: true
сообщает, что ошибку возвращать не надо — надо исключить эту строку из интервала и продолжить дальше.
Можно ли отсортировать или отфильтровать row?
Да. В этом случае сохраняются ключи. В случае sort
они выстраиваются в нужном порядке, а в случае с filter
остаются только те, которые соответсвуют условиям.
Если вы просто хотите удалить некоторые ключи из row
и знаете их, то используйте rowKeysRemove.