Soy muy nuevo en mecanografiar y tengo el siguiente diccionario donde las claves y los valores son matrices flotantes:
start_to_end_dict > {-121.95131592,37.253239074: Array(2)} > -121.95131592,37.253239074: (2) [-131.950349087, 47.253099466] > [[Prototype]]: ObjectQuiero obtener una lista de las claves como una lista de matrices como esta:
> [Array(2)] > 0: (2) [-121.95131592, 37.253239074] > length: 1 > [[Prototype]]: Array(0)Pero luego obtengo una lista de cadenas en su lugar:
Object.keys(start_to_end_dict) ['-121.95131592,37.253239074'] Noté que values parecen obtener una lista de matrices:
Object.values(start_to_end_dict) > [Array(2)] > 0: (2) [-131.950349087, 47.253099466] > length: 1 > [[Prototype]]: Array(0)Prueba esto :
const start_to_end_dict = { '-121.95131592,37.253239074': [-131.950349087, 47.253099466] }; const arr = []; Object.keys(start_to_end_dict).forEach(key => { key.split(',').forEach(elem => arr.push(Number(elem))) }); console.log(arr);Como señalaron otros usuarios en los comentarios sobre su pregunta: las claves de los objetos son siempre string en JavaScript. Puede escribir una función para analizar las coordenadas de la cadena y luego iterar sobre las entradas del objeto , usándola para analizar los valores de las coordenadas numéricas de cada clave, mientras accede a los valores (ya analizados) directamente:
Se puede acceder a una explicación de la siguiente expresión regular aquí .
type Coords = [number, number]; const coordsRegex = /^\s*(?<n1>-?(?:\d+\.)*\d+)\s*,\s*(?<n2>-?(?:\d+\.)*\d+)\s*$/; function parseCoords (stringCoords: string): Coords { const groups = stringCoords.match(coordsRegex)?.groups; if (!groups) throw new Error('Coordinates format not valid'); const coords = [groups.n1, groups.n2].map(Number) as Coords; return coords; } // This is the object value that you showed in the question: const exampleData: Record<string, Coords> = { '-121.95131592,37.253239074': [-131.950349087, 47.253099466], }; for (const [key, value] of Object.entries(exampleData)) { const keyCoords = parseCoords(key); console.log({keyCoords, valueCoords: value}); }JS compilado del patio de juegos de TS anterior:
"use strict"; const coordsRegex = /^\s*(?<n1>-?(?:\d+\.)*\d+)\s*,\s*(?<n2>-?(?:\d+\.)*\d+)\s*$/; function parseCoords(stringCoords) { const groups = stringCoords.match(coordsRegex)?.groups; if (!groups) throw new Error('Coordinates format not valid'); const coords = [groups.n1, groups.n2].map(Number); return coords; } // This is the object value that you showed in the question: const exampleData = { '-121.95131592,37.253239074': [-131.950349087, 47.253099466], }; for (const [key, value] of Object.entries(exampleData)) { const keyCoords = parseCoords(key); console.log({ keyCoords, valueCoords: value }); }