Métodos de Map de JavaScript

new Map() 方法

可以通过将数组传递给 new Map() 构造函数来创建 Map:

instancia

// Crear un Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

Prueba personalmente

Map.get()

se puede usar get() 方法获取 Map 中键的值:

instancia

fruits.get("apples");

Prueba personalmente

Map.set()

se puede usar set() 方法向 Map 添加元素:

instancia

// Crear un Map
const fruits = new Map();
// 设置 Map 值
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);

Prueba personalmente

set() 方法也可以用于更改现有的 Map 值:

instancia

fruits.set("apples", 500);

Prueba personalmente

Map.size

size 属性返回 Map 中元素的数量:

instancia

fruits.size;

Prueba personalmente

Map.delete()

delete() 方法移除 Map 中的一个元素:

instancia

fruits.delete("apples");

Prueba personalmente

Map.clear()

clear() 方法移除 Map 中的所有元素:

instancia

fruits.clear();

Prueba personalmente

Map.has()

如果 Map 中存在某个键,has() 方法返回 true:

instancia

fruits.has("apples");

Prueba personalmente

尝试以下代码:

fruits.delete("apples");
fruits.has("apples");

Prueba personalmente

Map.forEach()

forEach() 方法为 Map 中的每个键值对调用回调函数:

instancia

// 列出所有条目
let text = "";
fruits.forEach(function(value, key) {
  text += key + ' = ' + value;
});

Prueba personalmente

Map.entries()

entries() 方法返回一个包含 Map 中 [key, value] 对的迭代器对象:

instancia

// 列出所有条目
let text = "";
for (const x of fruits.entries()) {
  text += x;
}

Prueba personalmente

Map.keys()

keys() 方法返回一个包含 Map 中键的迭代器对象:

instancia

// 列出所有键
let text = "";
for (const x of fruits.keys()) {
  text += x;
}

Prueba personalmente

Map.values()}

values() el método devuelve un objeto iterador que contiene los valores del Map:

instancia

// Listar todos los valores
let text = "";
for (const x of fruits.values()) {
  text += x;
}

Prueba personalmente

se puede usar values() el método suma los valores en el Map:

instancia

// Sumar todos los valores
let total = 0;
for (const x of fruits.values()) {
  total += x;
}

Prueba personalmente

objeto como clave

Sugerencia:poder usar objetos como claves es una característica importante de Map.

instancia

// Crear objetos
const apples = {name: 'Apples'};
const bananas = {name: 'Bananas'};
const oranges = {name: 'Oranges'};
// Crear un Map
const fruits = new Map();
// Añadir nuevos elementos al Map
fruits.set(apples, 500);
fruits.set(bananas, 300);
fruits.set(oranges, 200);

Prueba personalmente

Atención:la clave es el objeto (apples), no la cadena ("apples"):

instancia

fruits.get("apples"); // Devuelve undefined

Prueba personalmente

JavaScript Map.groupBy()

ES2024 añadió a JavaScript Map.groupBy() método.

Map.groupBy() el método agrupa los elementos del objeto en función del valor de cadena devuelto por la función de callback.

Map.groupBy() el método no cambia el objeto original.

instancia

// Crear un array
const fruits = [
  {name: "apples", quantity: 300},
  {name: "bananas", quantity: 500},
  {name: "oranges", quantity: 200},
  {name: "kiwi", quantity: 150}
];
// Función de callback para agrupar
function myCallback({ quantity }) {
  return quantity > 200 ? "ok" : "low";
}
// Agrupar por cantidad
const result = Map.groupBy(fruits, myCallback);

Prueba personalmente

Compatibilidad con navegadores

Map.groupBy() Es una característica de ES2024.

A partir de marzo de 2024, todos los navegadores nuevos admiten esta característica:

Chrome Edge Firefox Safari Opera
Chrome 117 Edge 117 Firefox 119 Safari 17.4 Opera 103
Septiembre de 2023 Septiembre de 2023 Octubre de 2023 Octubre de 2024 Mayo de 2023

Advertencia:

Las características de ES2024 son relativamente nuevas.

Los navegadores antiguos pueden necesitar código alternativo (Polyfill).

La diferencia entre Object.groupBy() y Map.groupBy()

Object.groupBy() Y Map.groupBy() La diferencia radica en:

Object.groupBy() Agrupar elementos en un objeto JavaScript.

Map.groupBy() Agrupar elementos en un objeto Map.

Manual de referencia completo de Map

Para obtener información completa, visite nuestra:Manual de Map JavaScript.

Este manual contiene descripciones e instancias de todas las propiedades y métodos de Map.