⟵ сюдатуда ⟶
  • Мастерклассы
  • Внешние подключения
  • Tableau и PowerBI
  • amoCRM
  • Битрикс 24
  • База знаний
  • Обращение к данным временной таблицы
  • Потеря связи с БД при большом трафике данных
  • Сохранить файл в поле по внешней ссылке url
  • Формирование списка из отмеченных галочками строк и вывод на печать
  • Добавление цикла в таблицу циклов кнопкой из временной таблицы
  • Функция TryCatch и передача данных после отката
  • Ошибка доступа при переходе в цикл если первая таблица недоступна для пользователя
  • Архитектура системы рассчитывающей остатки по кассе или складу
  • Сортировка при выборке по отображению поля Селект, а не по его основанию
  • Блокировка введения дублированного значения
  • Табличное отображение в контекстной панели
  • Сортировка строк в таблице с помощью кнопки
  • Как получить значение по условию из списка вложенных массивов?
  • Сбросить счётчик id в таблице
  • Скрытие поля в таблице по условию
  • Подтверждение действия при нажатии на кнопку в контекстном окне
  • Пересчет большой таблицы
  • Как суммировать значения в rowList по одному из ключей (по одной из колонок)
  • Наборы полей по условию при открытии через linkToTable
  • Как отложить выполнение действия и выполнить его в фоне
  • Создание и удаление строк при выборе значений в Селект или Селект-дерево
  • selectRowListForSelect с условием при котором текущее значение получается зачеркнутым
  • Не все внешние запросы на Remotes выполняются и ломается счетчик id
  • Сортировка Расчётных таблиц в Цикле
  • Как передать данные в виде чисел при обращении POST к API стороннего сервиса (must be a "integer")
  • Как сделать график если есть несколько параметров
  • Сохранение изначальных значений в поле в случае, когда поле рассчитывается кодом
  • Как получить значение по условию из списка вложенных массивов?

    Оригинал на GitHub

    Ссылка на GitHub ⟹

    Вопрос

    Мне приходит json-список вложенных массивов с данными:

    [
      {
        "firstLevel_1": "some_shit_value",
        "firstLevel_2": {
          "secondLevel_1": "value_1",
          "secondLevel_2": {
            "id": 10,
            "value": "gold_11"
          }
        },
        "Date": "value_21"
      },
      {
        "firstLevel_1": "some_shit_value",
        "firstLevel_2": {
          "secondLevel_1": "value_1",
          "secondLevel_2": {
            "id": 11,
            "value": "gold_11"
          }
        },
        "Date": "value_22"
      },
      {
        "firstLevel_1": "some_shit_value",
        "firstLevel_2": {
          "secondLevel_1": "value_1",
          "secondLevel_2": {
            "id": 12,
            "value": "gold_11"
          }
        },
        "Date": "value_23"
      }
    ]
    

    Нужно вытащить из него одно значение Date если мы знаем значение в ключе id.

    Ответ

    Если мы ищем Date по id в этом примере то будет так:

    =: #json_field[$row_num][Date]
        row_num: $search_key_num[0]
            search_key_num: listSearch(list: #json_field[[firstLevel_2]][[secondLevel_2]][[id]]; key: "value" = 11)
    

    Пояснение кода

    Этот код в системе Totum используется для получения значения из поля json_field в текущей таблице, если вложенный ключ в этом поле равен определенному значению.

    В данном случае, он ищет значение ключа Date, если вложенный ключ id равен 11.

    1. #json_field[$row_num][Date]: Основная строка кода, которая возвращает значение ключа Date из поля json_field в текущей таблице. Индекс строки определяется строкой кода row_num.

    2. row_num: Строка кода, которая определяет номер строки, где найдено совпадение. В данном случае, это первый элемент списка search_key_num.

    3. search_key_num: Список, который содержит номера строк, где найдено совпадение по ключу id со значением 11.

    4. listSearch: Функция, которая ищет все ключи в списке json_field и возвращает их номера, где значение ключа id равно 11.

    5. #json_field[[firstLevel_2]][[secondLevel_2]][[id]]: Указание на вложенный ключ id в поле json_field на третьем уровне, сначала firstLevel_2, потом secondLevel_2 и потом id.

    6. key: "value" = 11: Условие, по которому ищется совпадение. В данном случае, это значение 11.

    Результат:

    На выходе мы получаем значение ключа Date из поля json_field, если вложенный ключ id равен 11.