$map
$map(array, function) -> arrayCompact type signature
<af>Source: JSONata
Documentation
Applies a mapping function to each item in an input sequence and returns the collected results.
The callback receives the current value, index, and source array. Mapped results that are undefined are omitted from the returned sequence. This local implementation expects an array or sequence input; it does not add the singleton-value coercion that FUME uses for $first(), $pMap(), and $pLimit().
Examples
Compute line totals with a mapping function
Input
This example uses the claims-lines example input. The expression maps across the claim lines to compute line totals.
Example input
JSON
[
{
"claimId": "clm-2001",
"lineNumber": 1,
"serviceCode": "PROC-010",
"serviceDisplay": "office visit",
"units": 1,
"unitPrice": 125,
"allowedAmount": 110,
"modifiers": [
"MOD-A"
]
},
{
"claimId": "clm-2001",
"lineNumber": 2,
"serviceCode": "PROC-020",
"serviceDisplay": "imaging study",
"units": "1",
"unitPrice": 350,
"allowedAmount": 300,
"modifiers": [
"MOD-B",
"MOD-C"
]
},
{
"claimId": "clm-2001",
"lineNumber": 3,
"serviceCode": "PROC-030",
"serviceDisplay": "lab panel",
"units": 2,
"unitPrice": 40,
"allowedAmount": 70,
"modifiers": []
},
{
"claimId": "clm-2002",
"lineNumber": 1,
"serviceCode": "PROC-010",
"serviceDisplay": "office visit",
"units": 1,
"unitPrice": 125,
"allowedAmount": 115,
"modifiers": [
"MOD-A"
]
},
{
"claimId": "clm-2002",
"lineNumber": 2,
"serviceCode": "PROC-040",
"serviceDisplay": "counseling",
"units": 3,
"unitPrice": 60,
"allowedAmount": 150,
"modifiers": [
"MOD-D"
]
}
]
Expression
$map($, function($l) { $number($l.units) * $l.unitPrice })
Result
[125, 350, 80, 125, 180]