Digamos que tengo el siguiente mapa:
let myMap = new Map().set('a', 1).set('b', 2);
Y quiero obtener ['a', 'b'] basado en lo anterior. Mi solución actual parece tan larga y horrible.
let myMap = new Map().set('a', 1).set('b', 2);
let keys = [];
for (let key of myMap)
keys.push(key);
console.log(keys);
Debe haber una mejor manera, ¿no?
javascript
dictionary
ecmascript-6
Lilleman
fuente
fuente
Array.from(Map.keys())
.Map
.Array.from(Map.values())
- en caso de que necesite valores, en lugar de claves.Respuestas:
Map.keys()
devuelve unMapIterator
objeto que se puede convertirArray
usandoArray.from
:EDITAR: también puede convertir objetos iterables en matriz utilizando sintaxis extendida
fuente
this.map.values().slice is not a function
. Tal vez debería actualizar.slice()
invocación se está ejecutando antes que el operador de propagación. Prueba[ ... Array.from(map.values()).slice(0) ]
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];
lo siguiente: TS2461: El tipo 'IterableIterator <número>' no es un tipo de matriz. Entonces esto no está permitido en TypeScript. Array.from funciona como se esperaba...."abc"
para obtener["a","b","c"]
ES6, que no es posible en TS...."abc"
tampoco...("abc")
está trabajando en la consola de Chrome, que es compatible con ES6?Puede usar el operador de propagación para convertir el iterador Map.keys () en una matriz.
fuente
Array.from(myMap.keys())
no funciona en scripts de aplicaciones de google.Intentar usarlo da como resultado el error
TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }
.Para obtener una lista de claves en GAS, haga esto:
fuente
map.keys()
valor de retorno no es iterable.Necesito algo similar con forma reactiva angular:
fuente
No es exactamente la mejor respuesta a la pregunta, pero este truco
new Array(...someMap)
me salvó un par de veces cuando necesito clave y valor para generar la matriz necesaria. Por ejemplo, cuando es necesario crear componentes de reacción a partir del objeto Map basado en valores clave y de valor.fuente
OK, vamos a ser un poco más completos y comencemos con lo que es Map para aquellos que no conocen esta función en JavaScript ... MDN dice:
Como mencionó, puede crear fácilmente una instancia de Map usando una nueva palabra clave ... En su caso:
Entonces veamos ...
La forma en que mencionó es una buena manera de hacerlo, pero sí, hay formas más concisas de hacerlo ...
Map tiene muchos métodos que puede usar, como los
set()
que ya utilizó para asignar los valores clave ...Uno de ellos es el
keys()
que devuelve todas las llaves ...En su caso, devolverá:
y los convierte fácilmente en una matriz utilizando formas ES6 , como el operador de propagación ...
fuente