4 formas de gerar um array (vetor) populado em Javascript
O bom e velho for
for
. Sem muitos segredos, podemos fazer o seguinte:const array = [] const size = 10 for (let i = 0; i < size; i++) { array.push(i) } // array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const names = [] const size = 7 for (let i = 0; i < size; i++) { names.push({ id: i, name: `Name ${i}` }) } /* names = 0: {id: 0, name: "Name 0"} 1: {id: 1, name: "Name 1"} 2: {id: 2, name: "Name 2"} 3: {id: 3, name: "Name 3"} 4: {id: 4, name: "Name 4"} 5: {id: 5, name: "Name 5"} 6: {id: 6, name: "Name 6"} */
const size = 7 const names = new Array(size) for (let i = 0; i < size; i++) { names[i] = { id: i, name: `Name ${i}` } } /* names = 0: {id: 0, name: "Name 0"} 1: {id: 1, name: "Name 1"} 2: {id: 2, name: "Name 2"} 3: {id: 3, name: "Name 3"} 4: {id: 4, name: "Name 4"} 5: {id: 5, name: "Name 5"} 6: {id: 6, name: "Name 6"} */
Array.fill
Array.fill
. Nesta forma, criamos um array com o tamanho desejado e informamos o valor para qual queremos preenchê-lo.const array = new Array(15).fill('valor') // array = ["valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor", "valor"]
fill
usa a mesma referência. Ou seja, se passarmos um objeto como valor no fill, todos os itens do vetor referenciarão o mesmo objeto. E caso alteramos um deles, iremos alterar todos.const people = new Array(3).fill({ name: 'Person' }) people[0].name = 'Changed Person' /* people = 0: {name: "Changed Person"} 1: {name: "Changed Person"} 2: {name: "Changed Person"} */
fill
com um map
(lembrando que map
transforma um vetor em outro).const people = new Array(3).fill(null).map(() => ({ name: 'Person' })) people[0].name = 'Changed Person' /* people = 0: {name: "Changed Person"} 1: {name: "Person"} 2: {name: "Person"} */
Array.from
Array.from
. Esta versão é bastante simples:const array = Array.from({ length: 5 }, () => 1) // array = [1, 1, 1, 1, 1] const people = Array.from({ length: 3 }, () => ({ name: 'Person' })) /* people = 0: {name: "Person"} 1: {name: "Person"} 2: {name: "Person"} */
Usando o Object.keys
Object.keys
.const numbers = Object.keys(new Array(5).fill(null)) // numbers = ["0", "1", "2", "3", "4"]
string
. Podemos usar um map para convertê-los:const numbers = Object.keys(new Array(5).fill(null)).map(Number) // numbers = [0, 1, 2, 3, 4]