logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo
Обзор
Описание конфигурации

Синтаксис шаблонов

Основы использования
Циклы

Инструменты форматирования

Обзор
Форматирование текста
Форматирование чисел
Форматирование валюты
Форматирование даты
Форматирование интервалов времени
Форматирование массивов

Расширенные функции

Условия
Расширенные возможности
Часто задаваемые вопросы
Сценарии использования
Previous PageОсновы использования
Next PageИнструменты форматирования
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Циклическая обработка

Циклическая обработка используется для многократного отображения данных из массивов или объектов. Для этого определяются начальные и конечные маркеры цикла, которые указывают на повторяющееся содержимое. Ниже мы рассмотрим несколько распространенных сценариев.

#Перебор массивов

#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}
#Результат
People
John
Bob

#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}
#Результат
People
Falcon 9
Model S

#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}
#Результат
People
Model S
Model 3

(Примечание: Строки, содержащие «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}
#Результат
Vehicles
Hyundai
Airbus