Para un mapa dado como este:
const contacts = new Map() contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"}) contacts.set('Hilary', {phone: "617-555-4321", address: "321 S 2nd St"})¿Cómo puedo obtener la lista de "teléfonos"? Algo como:
console.log(contacts.getKey("phone"))respuesta esperada: ["213-555-1234", "617-555-4321"]
Puede obtener los valores del mapa con el método de values() , luego use .map() para extraer de ellos.
const contacts = new Map() contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"}) contacts.set('Hilary', {phone: "617-555-4321", address: "321 S 2nd St"}) console.log(Array.from(contacts.values()).map(c => c.phone));No hay nada integrado que obtenga automáticamente las propiedades de los elementos del mapa.
Puede iterar directamente el objeto Mapa utilizando su iterador integrado que funciona con un bucle for . Esto tiene la ventaja de que no crea matrices intermedias innecesarias ni copias de los datos. Como tal, debería ser más eficiente en conjuntos de datos más grandes.
const contacts = new Map() contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"}); contacts.set('Hilary', {phone: "617-555-4321", address: "321 S 2nd St"}); let phoneNumbers = []; for (let value of contacts.values()) { phoneNumbers.push(value.phone); } console.log(phoneNumbers);O bien, puede escribir una pequeña función de ayuda para hacer este trabajo por usted, de modo que pueda reutilizar la lógica en otro lugar:
function mapGetField(map, field) { let results = []; for (let value of map.values()) { results.push(value[field]); } return results; } const contacts = new Map() contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"}); contacts.set('Hilary', {phone: "617-555-4321", address: "321 S 2nd St"}); console.log(mapGetField(contacts, "phone"));