Spec-Zone.ru › Sass

sass:map

Совместимость:
Dart Sass
с версии 1.23.0
LibSass
✗
Ruby Sass
✗
➤

Только Dart Sass в настоящее время поддерживает загрузку встроенных модулей с @use. Пользователи других реализаций должны вызывать функции, используя их глобальные имена вместо этого.

💡 Интересный факт:

Библиотеки и системы дизайна Sass склонны к совместному использованию и перезаписи конфигураций, которые представлены как вложенные карты (карты, содержащие карты, которые содержат карты).

Чтобы помочь вам работать с вложенными картами, некоторые функции карты поддерживают глубокие операции. Например, если вы передадите несколько ключей в map.get(), она будет следовать этим ключам, чтобы найти нужную вложенную карту:

@use "sass:map";

$config: (a: (b: (c: d)));
@debug map.get($config, a, b, c); // d
// SASS
@use "sass:map"

$config: (a: (b: (c: d)))
@debug map.get($config, a, b, c) // d
map.deep-merge($map1, $map2) //=> map
Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗

Идентично map.merge(), за исключением того, что значения вложенных карт также рекурсивно объединяются.

@use "sass:map";

$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
//   )
// )
// SASS
@use "sass:map"

$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, $key, $keys...) //=> map
Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗

Если $keys пустая, возвращает копию $map без значения, связанного с $key.

@use "sass:map";

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

@debug map.deep-remove($font-weights, "regular");
// ("medium": 500, "bold": 700)
// SASS
@use "sass: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.

@use "sass:map";

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

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

$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, $key, $keys...)
map-get($map, $key, $keys...)

Если $keys пустая, возвращает значение в $map, связанное с $key.

Если у $map нет значения, связанного с $key, возвращает null.

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

@debug map.get($font-weights, "medium"); // 500
@debug map.get($font-weights, "extra-bold"); // null
// SASS
@use "sass:map"
$font-weights: ("regular": 400, "medium": 500, "bold": 700)

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

Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗
➤

Только Dart Sass поддерживает вызов map.get() с более чем двумя аргументами.

Если $keys не пустая, следует набору ключей, включая $key и исключая последний ключ в $keys, слева направо, чтобы найти вложенную карту, предназначенную для поиска.

Возвращает значение в целевой карте, связанное с последним ключом в $keys.

Возвращает null, если карта не имеет значения, связанного с ключом, или если какой-либо ключ в $keys отсутствует в карте или ссылается на значение, которое не является картой.

@use "sass:map";

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

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

$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, $key, $keys...)
map-has-key($map, $key, $keys...) //=> boolean

Если $keys пустая, возвращает, содержит ли $map значение, связанное с $key.

@use "sass:map";

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

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

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

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

Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗
➤

Только Dart Sass поддерживает вызов map.has-key() с более чем двумя аргументами.

Если $keys не пустая, следует набору ключей, включая $key и исключая последний ключ в $keys, слева направо, чтобы найти вложенную карту, предназначенную для поиска.

Возвращает true, если целевая карта содержит значение, связанное с последним ключом в $keys.

Возвращает false, если нет, или если какой-либо ключ в $keys отсутствует в карте или ссылается на значение, которое не является картой.

@use "sass:map";

$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
// SASS
@use "sass:map"

$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)
map-keys($map) //=> list

Возвращает список всех ключей в $map, разделенных запятыми.

@use "sass:map";

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

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

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

@debug map.keys($font-weights)  // "regular", "medium", "bold"
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 появляются в конце карты.

@use "sass:map";

$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)
// SASS
@use "sass:map"

$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)

Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗
➤

Только Dart Sass поддерживает вызов map.merge() с более чем двумя аргументами.

Если $keys не пустая, следует набору $keys, чтобы найти вложенную карту, предназначенную для объединения. Если какой-либо ключ в $keys отсутствует в карте или ссылается на значение, которое не является картой, значение в этом ключе устанавливается в пустую карту.

Возвращает копию $map1, где целевая карта заменена новой картой, которая содержит все ключи и значения как из целевой карты, так и из $map2.

@use "sass:map";

$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
//     )
//   )
// )
// SASS
@use "sass:map"

$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, $keys...)
map-remove($map, $keys...) //=> map

Возвращает копию $map без значений, связанных с $keys.

Если у ключа из $keys нет связанного значения в $map, оно игнорируется.

@use "sass: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)
// SASS
@use "sass: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, $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.

@use "sass:map";

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

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

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

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

Совместимость:
Dart Sass
с версии 1.27.0
LibSass
✗
Ruby Sass
✗
➤

Только Dart Sass поддерживает вызов map.set() с более чем тремя аргументами.

Если $keys переданы, следует $keys для поиска вложенного отображения, предназначенного для обновления. Если какой-либо ключ в $keys отсутствует в отображении или ссылается на значение, которое не является отображением, устанавливает значение для этого ключа в пустое отображение.

Возвращает копию $map со значением целевого отображения в $key, установленным в $value.

@use "sass:map";

$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
//     )
//   )
// )
// SASS
@use "sass:map"

$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)
map-values($map) //=> list

Возвращает список значений $map, разделенных запятыми.

@use "sass:map";

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

@debug map.values($font-weights); // 400, 500, 700
// SASS
@use "sass:map"

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

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

© 2006–2025 the Sass team, and numerous contributors
Licensed under the MIT License.
https://sass-lang.com/documentation/modules/map

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API