4/5

a!map(): pair two lists into records

Medium

Given a list of names and a matching list of scores, return one record per person with a name field and a score field.

{"Ann", "Bo"} and {90, 40} give {a!map(name: "Ann", score: 90), a!map(name: "Bo", score: 40)}.

The two lists line up by position, so loop over the positions rather than over either list.

Inputs

  • ri!names — List of Text
  • ri!scores — List of Integer

ri! Rule Inputs

ri!namesList of Text
{
  "Ann",
  "Bo"
}
ri!scoresList of Integer
{
  90,
  40
}

Example 1 — Two people

Input: ri!names
{
  "Ann",
  "Bo"
}
Input: ri!scores
{
  90,
  40
}
Output:
{
  a!map(name: "Ann", score: 90),
  a!map(name: "Bo", score: 40)
}

Example 2 — One person

Input: ri!names
{"Cy"}
Input: ri!scores
{70}
Output:
{a!map(name: "Cy", score: 70)}

Example 3 — Nobody

Input: ri!names
{}
Input: ri!scores
{}
Output:
{}

Example 4 — Three people keep their order

Input: ri!names
{
  "A",
  "B",
  "C"
}
Input: ri!scores
{
  1,
  2,
  3
}
Output:
{
  a!map(name: "A", score: 1),
  a!map(name: "B", score: 2),
  a!map(name: "C", score: 3)
}

Appian Expression Tips

  • • Use ri!variableName for rule inputs
  • • Use a!localVariables(local!x: …, body) for locals
  • • Use a!forEach(items: …, expression: fv!item) to iterate
  • • Use where() / reject(fn!isnull, list) to filter