Dado un número x , ¿cuál es la mejor manera de decir dame el número x de una cadena, objeto, lo que sea, y colócalos todos en una matriz?
Idealmente, tendrían acceso a su índice y eso es todo.
Sé que puedo crear una matriz y empujarla en un bucle for (con i < x; ) pero me gustaría que fuera más limpia y nativa, por favor.
Este tipo de sintaxis:
const arrayOfDivs = numberOfDivs.repeat(idx => html`<div id=${idx}></div>`; // numberOfDivs == 3 arrayOfDivs == [ '<div id=${0}></div>' , '<div id=${1}></div>' , '<div id=${2}></div>' ]Y si no hay una manera como esta, ¿qué usan otras personas y alguien puede pedirle a javascript que lo invente?
Hago un bucle for y empujo a una matriz por lo general, pero recuerdo haber creado una matriz [0,1,2,3,4] a partir del número anterior y .map a partir de eso, ¡malos tiempos!
Gracias
como
map
Array.from tiene una API muy similar a map . Puede proporcionarle un número que vaya a la propiedad .length del primer argumento:
function createSeveral<Item>(count: number, itemFactory: () => Item): Item[] { return Array.from({ length: count }, itemFactory) as Item[]; }Entonces, para tu caso, podrías usarlo así:
Array.from({ length: numberOfDivs }, (_, i) => html`<div id=${i}></div>`)En ES6, puede crear una matriz que contenga los elementos 1 a n usando la sintaxis extendida y Array.prototype.keys() (que luego podría .map como mencionó):
const arr = [...Array(10).keys()]; // arr => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Si desea que el mismo objeto se repita n veces, puede usar Array.prototype.fill() :
const arr = Array(5).fill('x'); // arr => ['x', 'x', 'x', 'x', 'x']