Уведомление о переводе ИИ
Эта документация была автоматически переведена ИИ.
Циклическая обработка
Циклическая обработка используется для многократного отображения данных из массивов или объектов. Для этого определяются начальные и конечные маркеры цикла, которые указывают на повторяющееся содержимое. Ниже мы рассмотрим несколько распространенных сценариев.
Перебор массивов
1. Описание синтаксиса
- Используйте тег
{d.array[i].property} для определения текущего элемента цикла, а {d.array[i+1].property} — для указания следующего элемента, чтобы обозначить область цикла.
- Во время цикла первая строка (часть
[i]) автоматически используется как шаблон для повторения; вам нужно лишь один раз указать пример цикла в шаблоне.
Пример формата синтаксиса:
{d.arrayName[i].property}
{d.arrayName[i+1].property}
2. Пример: Простой цикл по массиву
Данные
{
"cars": [
{ "brand": "Toyota", "id": 1 },
{ "brand": "Hyundai", "id": 2 },
{ "brand": "BMW", "id": 3 },
{ "brand": "Peugeot","id": 4 }
]
}
Шаблон
Carsid
{d.cars[i].brand}{d.cars[i].id}
{d.cars[i+1].brand}
Результат
Carsid
Toyota1
Hyundai2
BMW3
Peugeot4
3. Пример: Цикл по вложенному массиву
Подходит для случаев, когда массив содержит вложенные массивы; уровень вложенности может быть неограниченным.
Данные
[
{
"brand": "Toyota",
"models": [
{ "size": "Prius 4", "power": 125 },
{ "size": "Prius 5", "power": 139 }
]
},
{
"brand": "Kia",
"models": [
{ "size": "EV4", "power": 450 },
{ "size": "EV6", "power": 500 }
]
}
]
Шаблон
{d[i].brand}
Models
{d[i].models[i].size} - {d[i].models[i].power}
{d[i].models[i+1].size}
{d[i+1].brand}
Результат
Toyota
Models
Prius 4 - 125
Prius 5 - 139
Kia
4. Пример: Двунаправленный цикл (расширенная функция, v4.8.0+)
Двунаправленные циклы позволяют одновременно выполнять итерации как по строкам, так и по столбцам. Это удобно для создания сравнительных таблиц и других сложных макетов (обратите внимание: в настоящее время некоторые форматы официально поддерживаются только в шаблонах DOCX, HTML и MD).
Данные
{
"titles": [
{ "name": "Kia" },
{ "name": "Toyota" },
{ "name": "Hopium" }
],
"cars": [
{ "models": [ "EV3", "Prius 1", "Prototype" ] },
{ "models": [ "EV4", "Prius 2", "" ] },
{ "models": [ "EV6", "Prius 3", "" ] }
]
}
Шаблон
{d.titles[i].name}{d.titles[i+1].name}
{d.cars[i].models[i]}{d.cars[i].models[i+1]}
{d.cars[i+1].models[i]}
Результат
KiaToyotaHopium
EV3Prius 1Prototype
EV4Prius 2
EV6Prius 3
5. Пример: Доступ к значениям итератора цикла (v4.0.0+)
Внутри цикла вы можете напрямую получить доступ к индексу текущей итерации, что помогает удовлетворить особые требования к форматированию.
Пример шаблона
{d[i].cars[i].other.wheels[i].tire.subObject:add(.i):add(..i):add(...i)}
Примечание: Количество точек указывает на уровень индекса (например, .i обозначает текущий уровень, а ..i — предыдущий). В настоящее время существует проблема с обратным порядком; пожалуйста, обратитесь к официальной документации для получения подробной информации.
Перебор объектов
1. Описание синтаксиса
- Для свойств объекта используйте
.att для получения имени свойства и .val для получения его значения.
- При итерации каждый элемент свойства обходится по очереди.
Пример формата синтаксиса:
{d.objectName[i].att} // имя свойства
{d.objectName[i].val} // значение свойства
2. Пример: Перебор свойств объекта
Данные
{
"myObject": {
"paul": "10",
"jack": "20",
"bob": "30"
}
}
Шаблон
People namePeople age
{d.myObject[i].att}{d.myObject[i].val}
{d.myObject[i+1].att}{d.myObject[i+1].val}
Результат
People namePeople age
paul10
jack20
bob30
Сортировка
Используя функцию сортировки, вы можете напрямую сортировать данные массива в шаблоне.
1. Описание синтаксиса: Сортировка по возрастанию
- Используйте атрибут в теге цикла в качестве критерия сортировки. Формат синтаксиса:
{d.array[sortingAttribute, i].property}
{d.array[sortingAttribute+1, i+1].property}
- Если требуется несколько критериев сортировки, разделите атрибуты запятыми внутри квадратных скобок.
2. Пример: Сортировка по числовому атрибуту
Данные
{
"cars": [
{ "brand": "Ferrari", "power": 3 },
{ "brand": "Peugeot", "power": 1 },
{ "brand": "BMW", "power": 2 },
{ "brand": "Lexus", "power": 1 }
]
}
Шаблон
Cars
{d.cars[power, i].brand}
{d.cars[power+1, i+1].brand}
Результат
Cars
Peugeot
Lexus
BMW
Ferrari
3. Пример: Сортировка по нескольким атрибутам
Данные
{
"cars": [
{ "brand": "Ferrari", "power": 3, "sub": { "size": 1 } },
{ "brand": "Aptera", "power": 1, "sub": { "size": 20 } },
{ "brand": "Peugeot", "power": 1, "sub": { "size": 20 } },
{ "brand": "BMW", "power": 2, "sub": { "size": 1 } },
{ "brand": "Kia", "power": 1, "sub": { "size": 10 } }
]
}
Шаблон
Cars
{d.cars[power, sub.size, i].brand}
{d.cars[power+1, sub.size+1, i+1].brand}
Результат
Cars
Kia
Aptera
Peugeot
BMW
Ferrari
Фильтрация
Фильтрация используется для отбора строк в цикле на основе определенных условий.
1. Описание синтаксиса: Фильтрация по числовому значению
- Добавьте условия в тег цикла (например,
age > 19). Формат синтаксиса:
{d.array[i, condition].property}
2. Пример: Фильтрация по числовому значению
Данные
[
{ "name": "John", "age": 20 },
{ "name": "Eva", "age": 18 },
{ "name": "Bob", "age": 25 },
{ "name": "Charly", "age": 30 }
]
Шаблон
People
{d[i, age > 19, age < 30].name}
{d[i+1, age > 19, age < 30].name}
Результат
3. Описание синтаксиса: Фильтрация по строковому значению
- Укажите строковые условия, используя одинарные кавычки. Пример формата:
{d.array[i, type='rocket'].name}
4. Пример: Фильтрация по строковому значению
Данные
[
{ "name": "Falcon 9", "type": "rocket" },
{ "name": "Model S", "type": "car" },
{ "name": "Model 3", "type": "car" },
{ "name": "Falcon Heavy","type": "rocket" }
]
Шаблон
People
{d[i, type='rocket'].name}
{d[i+1, type='rocket'].name}
Результат
People
Falcon 9
Falcon Heavy
5. Описание синтаксиса: Фильтрация первых N элементов
- Вы можете использовать индекс цикла
i для фильтрации первых N элементов. Пример синтаксиса:
{d.array[i, i < N].property}
6. Пример: Фильтрация первых двух элементов
Данные
[
{ "name": "Falcon 9" },
{ "name": "Model S" },
{ "name": "Model 3" },
{ "name": "Falcon Heavy" }
]
Шаблон
People
{d[i, i < 2].name}
{d[i+1, i < 2].name}
Результат
7. Описание синтаксиса: Исключение последних N элементов
- Используйте отрицательный индекс
i для обозначения элементов с конца. Например:
{d.array[i=-1].property} получает последний элемент.
{d.array[i, i!=-1].property} исключает последний элемент.
8. Пример: Исключение последнего и двух последних элементов
Данные
[
{ "name": "Falcon 9" },
{ "name": "Model S" },
{ "name": "Model 3" },
{ "name": "Falcon Heavy" }
]
Шаблон
Последний элемент: {d[i=-1].name}
Исключая последний элемент:
{d[i, i!=-1].name}
{d[i+1, i!=-1].name}
Исключая два последних элемента:
{d[i, i<-2].name}
{d[i+1, i<-2].name}
Результат
Последний элемент: Falcon Heavy
Исключая последний элемент:
Falcon 9
Model S
Model 3
Исключая два последних элемента:
Falcon 9
Model S
9. Описание синтаксиса: Интеллектуальная фильтрация
- Используя блоки интеллектуальных условий, вы можете скрыть целую строку на основе сложных условий. Пример формата:
{d.array[i].property:ifIN('keyword'):drop(row)}
10. Пример: Интеллектуальная фильтрация
Данные
[
{ "name": "Falcon 9" },
{ "name": "Model S" },
{ "name": "Model 3" },
{ "name": "Falcon Heavy" }
]
Шаблон
People
{d[i].name}
{d[i].name:ifIN('Falcon'):drop(row)}
{d[i+1].name}
Результат
(Примечание: Строки, содержащие «Falcon» в шаблоне, удаляются условием интеллектуальной фильтрации.)
Удаление дубликатов
1. Описание синтаксиса
- Используя пользовательский итератор, вы можете получить уникальные (неповторяющиеся) элементы на основе значения определенного свойства. Синтаксис аналогичен обычному циклу, но автоматически игнорирует повторяющиеся элементы.
Пример формата:
{d.array[property].property}
{d.array[property+1].property}
2. Пример: Выбор уникальных данных
Данные
[
{ "type": "car", "brand": "Hyundai" },
{ "type": "plane", "brand": "Airbus" },
{ "type": "plane", "brand": "Boeing" },
{ "type": "car", "brand": "Toyota" }
]
Шаблон
Vehicles
{d[type].brand}
{d[type+1].brand}
Результат