Skip to content

map

从每个数组条目中选取一个属性,或用表达式映射条目。

语法

knap
{{ value | map:"name" }}
{{ value | map:"author.name" }}
{{ value | map:item => item.name }}
{{ value | map:item => ({name: item.name}) }}
{{ value | map:item => "prefix/${item}" }}

用法

  • 传入带引号的属性路径即可进行简单选取。点分路径用于选取嵌套的自有属性。
  • 箭头表达式可以选取属性、构造一个小对象,或把条目插值进字符串字面量。
  • 属性选取会保留取值类型;路径缺失时产生 null
  • 内置过滤器不能在箭头表达式内部调用。需要渲染映射结果时,请在 map 之后链式调用 template

示例

属性简写

Data
json
{
  "people": [
    {
      "name": "Ada"
    },
    {
      "name": "Lin"
    }
  ]
}
Template
knap
{{ people | map:"name" }}
Output
md
["Ada","Lin"]

嵌套属性

Data
json
{
  "people": [
    {
      "author": {
        "name": "Ada"
      }
    },
    {
      "author": {
        "name": "Lin"
      }
    }
  ]
}
Template
knap
{{ people | map:"author.name" }}
Output
md
["Ada","Lin"]

构造对象

Data
json
{
  "people": [
    {
      "name": "Ada",
      "role": "Engineer"
    },
    {
      "name": "Lin",
      "role": "Designer"
    }
  ]
}
Template
knap
{{ people | map:person => ({name: person.name, role: person.role}) }}
Output
md
[{"name":"Ada","role":"Engineer"},{"name":"Lin","role":"Designer"}]

构建字符串

Data
json
{
  "genres": [
    "rock",
    "pop"
  ]
}
Template
knap
{{ genres | map:item => "genres/${item}" }}
Output
md
["genres/rock","genres/pop"]