sass:map

Sass 库和设计系统倾向于共享和覆盖表示为嵌套映射(包含映射的映射的映射)的配置。为了帮助您使用嵌套地图,一些地图函数支持深度操作。例如,如果您将多个键传递给 map.get() ,它将按照这些键找到所需的嵌套映射:
$config: (a: (b: (c: d)));
@debug map.get($config, a, b, c); // d


map.deep-merge()

map.deep-merge($map1, $map2) //=> map

map.merge() 相同,只是嵌套的映射值也被递归合并。

$helvetica-light: (
  "weights": (
    "lightest": 100,
    "light": 300
  )
);
$helvetica-heavy: (
  "weights": (
    "medium": 500,
    "bold": 700
  )
);

@debug map.deep-merge($helvetica-light, $helvetica-heavy);
// (
//   "weights": (
//     "lightest": 100,
//     "light": 300,
//     "medium": 500,
//     "bold": 700
//   )
// )
@debug map.merge($helvetica-light, $helvetica-heavy);
// (
//   "weights": (
//     "medium: 500,
//     "bold": 700
//   )
// )


map.deep-remove()

map.deep-remove($map, $key, $keys...) //=> map

如果 $key 为空,则返回没有与 $key 关联的值的 $map 副本。

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.deep-remove($font-weights, "regular");
// ("medium": 500, "bold": 700)

如果 $keys 不为空,则遵循包括 $key 和不包括 $keys 中最后一个键的键集,从左到右查找要更新的嵌套映射。返回 $map 的副本,其中目标映射没有与 $keys 中最后一个键关联的值。

$fonts: (
  "Helvetica": (
    "weights": (
      "regular": 400,
      "medium": 500,
      "bold": 700
    )
  )
);

@debug map.deep-remove($fonts, "Helvetica", "weights", "regular");
// (
//   "Helvetica": (
//     "weights: (
//       "medium": 500,
//       "bold": 700
//     )
//   )
// )


map.get()

map.get($map, $key, $keys...)
map-get($map, $key, $keys...)

如果 $key 为空,则返回与 $key 关联的 $map 中的值。如果 $map 没有与 $key 关联的值,则返回 null

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.get($font-weights, "medium"); // 500
@debug map.get($font-weights, "extra-bold"); // null

如果 $keys 不为空,则遵循包括 $key 和不包括 $keys 中最后一个键的键集,从左到右查找要搜索的嵌套映射。返回与 $keys 中最后一个键相关联的目标映射中的值。如果映射没有与键关联的值,或者映射中缺少 $keys 中的任何键或引用了非映射的值,则返回 null

$fonts: (
  "Helvetica": (
    "weights": (
      "regular": 400,
      "medium": 500,
      "bold": 700
    )
  )
);

@debug map.get($fonts, "Helvetica", "weights", "regular"); // 400
@debug map.get($fonts, "Helvetica", "colors"); // null


map.has-key()

map.has-key($map, $key, $keys...)
map-has-key($map, $key, $keys...)

如果 $keys 为空,则返回是否 $map 包含与 $key 关联的值。

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.has-key($font-weights, "regular"); // true
@debug map.has-key($font-weights, "bolder"); // false

如果 $keys 不为空,则按照包含 $key 和排除 $keys 中最后一个键的键集,从左到右查找要搜索的嵌套映射。如果目标映射包含与 $keys 中最后一个键相关联的值,则返回 true 。如果不存在,或者如果映射中缺少 $keys 中的任何键或引用的值不是映射,则返回 false

$fonts: (
  "Helvetica": (
    "weights": (
      "regular": 400,
      "medium": 500,
      "bold": 700
    )
  )
);

@debug map.has-key($fonts, "Helvetica", "weights", "regular"); // true
@debug map.has-key($fonts, "Helvetica", "colors"); // false


map.keys()

map.keys($map)
map-keys($map) //=> map
$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.keys($font-weights); // "regular", "medium", "bold"


map.merge()

map.merge($map1,$map2)
map-merge($map1,$map2)
map.merge($map1,$keys..., $map2)
map-merge($map1,$keys..., $map2) //=> map
⚠️注意!
在实践中,实际参数 map.merge($map1,$keys...,$map2) map.merge($map1,$args...) .此处对其进行描述 $map1 , $keys... , $map2 仅用于说明目的。

如果未传递任何 $keys ,则返回一个新映射,其中包含来自 $map1 $map2 的所有键和值。如果 $map1 $map2 具有相同的键,则优先考虑 $map2 的值。返回的映射中也出现在 $map1 中的所有键的顺序与在 $map1 中的顺序相同。 $map2 中的新键显示在地图的末尾。

$light-weights: ("lightest": 100, "light": 300);
$heavy-weights: ("medium": 500, "bold": 700);

@debug map.merge($light-weights, $heavy-weights);
// ("lightest": 100, "light": 300, "medium": 500, "bold": 700)

如果 $keys 不为空,则按照 $keys 查找要合并的嵌套映射。如果映射中缺少 $keys 中的任何键或引用的值不是映射,请将该键处的值设置为空映射。返回 $map1 的副本,其中目标映射被包含目标映射和 $map2 中的所有键和值的新映射替换。

$fonts: (
  "Helvetica": (
    "weights": (
      "lightest": 100,
      "light": 300
    )
  )
);
$heavy-weights: ("medium": 500, "bold": 700);

@debug map.merge($fonts, "Helvetica", "weights", $heavy-weights);
// (
//   "Helvetica": (
//     "weights": (
//       "lightest": 100,
//       "light": 300,
//       "medium": 500,
//       "bold": 700
//     )
//   )
// )


map.remove()

map.remove($map, $keys...)
map-keys($map, $keys...) //=> map

返回没有任何与 $keys 关联的值的 $map 副本。如果 $keys 中的键在 $map 中没有关联值,则忽略该键。

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.remove($font-weights, "regular"); // ("medium": 500, "bold": 700)
@debug map.remove($font-weights, "regular", "bold"); // ("medium": 500)
@debug map.remove($font-weights, "bolder");
// ("regular": 400, "medium": 500, "bold": 700)


map.set()

map.set($map, $key, $value)
map.set($map, $keys..., $key, $value) //=> map
在实践中,实际参数 map.set($map,$keys...,$key,$value) 作为映射传递。 map.set($map,$args...) 。它们在这里被描述为 $map,$keys...,$key,$value 仅用于说明目的。

如果未传递 $keys ,则返回 $map 的副本,其中 $key 处的值设置为 $value

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.set($font-weights, "regular", 300);
// ("regular": 300, "medium": 500, "bold": 700)

如果传递了 $keys ,则按照 $keys 查找要更新的嵌套映射。如果映射中缺少 $keys 中的任何键或引用的值不是映射,请将该键处的值设置为空映射。返回一个 $map 的副本,目标 $map $key 处的值设置为 $value

SCSS 语法
$fonts: (
  "Helvetica": (
    "weights": (
      "regular": 400,
      "medium": 500,
      "bold": 700
    )
  )
);

@debug map.set($fonts, "Helvetica", "weights", "regular", 300);
// (
//   "Helvetica": (
//     "weights": (
//       "regular": 300,
//       "medium": 500,
//       "bold": 700
//     )
//   )
// )


map.values()

map.values($map)
map-values($map) //=> map

返回 $map 中所有值的逗号分隔列表。

$font-weights: ("regular": 400, "medium": 500, "bold": 700);

@debug map.values($font-weights); // 400, 500, 700

上篇: sass:list

下篇: sass:math