Quiero crear una matriz de objetos en javascript como una forma de intervalo que es dinámica, como supongamos que el valor del intervalo es 10, entonces debería comenzar con 10 y terminar con 100
valor inicial = 10 valor final = 100
así que la matriz final parece
[ { "label": "10", "value": "10" }, { "label": "20", "value": "20" }, { "label": "30", "value": "30" }, { "label": "40", "value": "40" }, { "label": "50", "value": "50" }, { "label": "60", "value": "60" }, { "label": "70", "value": "70" }, { "label": "80", "value": "80" }, { "label": "90", "value": "90" }, { "label": "100", "value": "100" }
]
Entonces, ¿alguna idea de cómo puedo hacer una matriz de objetos como la anterior?
También podría usar Array.from()
para generar los valores.
Usaríamos una función createLabels()
para envolver esto, pasando un startValue, endValue y step.
function createLabels(startValue, endValue, step) { const length = 1 + (endValue - startValue) / step; return Array.from({ length }, (v,k) => { const value = String(startValue + k*step); return { label: value, value }; }); } console.log(createLabels(10, 100, 10))
.as-console-wrapper { max-height: 100% !important; }
Puede inicializar su matriz de esta manera:
[...Array(10).keys()].map(i => ({'label':10+i*10, 'value':10+i*10}))
Si quieres uno más genérico:
const gen = (init,end,step) => ([...Array(Math.ceil((end-init+1)/step)).keys()].map(i => ({ 'label':init+(i)*step, 'value':init+(i)*step }))); gen(10,100,10);