Quiero inicializar un diccionario con k matrices vacías (las claves son números enteros de 0 a k-1), algo similar a la lista de comprensión de Python:
data = {k: [] for k in range(2)}¿Es algo posible en javascript? si no, ¿cuál sería la mejor manera de hacerlo?
Sí, es posible hacerlo en una sola línea en JS.
let data = { ...Array.from({ length: 2 }, () => []) }; console.log(data);También puedes experimentarlo,aquí
Será más fácil y reutilizable si lo convierte en una función. Aquí el ejemplo:
// traditional function function generateData(howMany) { return { ...Array.from({ length: howMany }, () => []) }; } // ES 6 function const generateDataES6 = (howMany) => ({ ...Array.from({ length: howMany }, () => []) }); console.log("traditionnal:", generateData(4)); console.log("ES6:", generateDataES6(3));Referencias:
- Operador de propagación: MDN - Sintaxis de propagación
- Array.from() : MDN - Array.from() y W3-School - JS Array.from()
en pitón
>>> {k: [] for k in range(2)} {0: [], 1: []}En javascript, debe hacer lo siguiente:
const data = {}; for (let k = 0; k < 2; ++k) data[k] = []; console.log(data)Creo que su declaración de phyton generará el siguiente resultado
datos = {k: [] para k en el rango (2)}
imprimir (datos)
// {0: [], 1: []}
En javascript, puede utilizar .reduce() para lograr el mismo resultado.
data = [...Array(2).keys()].reduce((obj, d) => { obj[d] = []; return obj; }, {}) console.log(data) // {0: [], 1: []}