найти связанные значения в словаре - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть условие, где мне нужно получить значение taskId словаря, где код задачи "LIFE_MAX_DAYS". Как мне это сделать?

  Dictionary
        replFlag: null (Text)
        taskCode: "LIFE_MAX_DAYS"
        createdBy: "Administrator"
        createdOn: 3/20/2020 1:54 AM EDT
        lastModifiedBy: "Administrator"
        lastModifiedOn: 3/20/2020 1:54 AM EDT
        actionId: null (Number (Integer))
        priorityId: 5
        statusId: null (Number (Integer))
        concatKey: null (Text)
        taskId: 5980
        batchId: null (Number (Integer))
        id: 4
    Dictionary
        replFlag: null (Text)
        taskCode: "LIFE_MAX_DAYS"
        createdBy: "Administrator"
        createdOn: 3/20/2020 1:54 AM EDT
        lastModifiedBy: "Administrator"
        lastModifiedOn: 3/20/2020 1:54 AM EDT
        actionId: null (Number (Integer))
        priorityId: 5
        statusId: null (Number (Integer))
        concatKey: null (Text)
        taskId: 5980
        batchId: null (Number (Integer))
        id: 5

1 Ответ

0 голосов
/ 22 апреля 2020
  • wherecontains находит признаки, где предоставляется значение массива.
  • Кроме того, списки поддерживают мультииндексирование (например, {"a", "b", "c", "d"}[{1, 3}] возвращает {"a", "c"}).
  • Наконец, списки поддерживают прогнозируемое индексирование (например, {{x: 1}, {x: 2}, {x: 3}}.x возвращает {1, 2, 3})

Эти три функции позволяют вам сделать это:

with(
  /* Pull out just the task codes of all the tasks */
  taskCodesOfTasks: listOfTasks.taskCode,
  /* Get the indicies where the task code is what we're looking for */
  indicies: wherecontains("LIFE_MAX_DAYS", taskCodesOfTasks),
  /* Pull out the task data */
  selectedTasks: listOfTasks[indicies],
  /* Return the task IDs */
  selectedTasks.taskId
)

Которые, конечно, можно записать с гораздо меньшей церемонией:

listOfTasks[wherecontains("LIFE_MAX_DAYS", listOfTasks.taskCode)].taskId
...