Doubt about JS objects with array

Asked

Viewed 497 times

2

I’m wondering how to make an object that has an array inside, I don’t even know if that’s possible, but it follows more or less what I want to do:

var produtos =[
    {   nome: "Sei lá",
        cor: azul,
        tamanho: [ M, G, GG] // não sei como faço pra receber uma array aki.
    }
]

1 answer

2


Creating the products

how to make an object that has array inside

It is possible to create an object within a yes array. To do this just use the objects Array and Object.

Example:

/* Cria a constante onde será armazenado os produtos */
const produtos = [];

/* Cria a variável onde será criado o produto */
let produto  = new Object();

/**
  Para criar uma propriedade nesse objeto,
  basta incluir o nome da propriedade na variável do objeto
 */
produto.nome = "Sei lá";
produto.cor = "azul";
produto.isDigital = false;

/* Aqui nós criamos um objeto já setado com um array */
produto.tamanho = ["M", "G", "GG"]

/* Adiciona o produto recém criado na constante produtos */
produtos.push(produto);

console.log( JSON.stringify(produtos) );

Changing the products

To change these values is very simple, just access the product through the index (that goes 0.n-1), access the property and set a new value.

Like property tamanho is an array, we can change using the method push or unshift

produtos = [{
  "nome": "Sei lá",
  "cor": "azul",
  "tamanho": ["M", "G", "GG"]
}]

/**
 * Acessa o primeiro produto e utiliza o método
 * PUSH para inserir um novo valor ao array
 */
produtos[0].tamanho.unshift("P");
produtos[0].tamanho.push("XG");

/* Imprime na tela */
console.log( produtos );

Reading the information

To read the information just use a repeating structure like the for or the method forEach of the object Array

const produtos = [{
  "nome": "Sei lá",
  "cor": "azul",
  "tamanho": ["M", "G", "GG"]
}]

for (let produto of produtos) {
  console.log( `Produto: ${produto.nome}` );
  console.log( `Produto: ${produto.tamanho[1]}` );
}

console.log( "------------- OU -------------" );

produtos.forEach( produto => {
  console.log( `Produto: ${produto.nome}` );
  console.log( `Produto: ${produto.tamanho[1]}` );
});

And if you just want to read the information of a product that has a certain feature, just use the method Array.filter

const produtos = [{
  "nome": "Sei lá",
  "cor": "azul",
  "tamanho": ["M", "G", "GG"]
},{
  "nome": "Sei lá 2",
  "cor": "preto",
  "tamanho": ["PP", "P"]
}]

let produtosFiltrado = produtos.filter( produto => produto.cor == "preto" )

console.log( produtosFiltrado );

  • Thank you so much, it helped me even with future doubts on the subject kkk congratulations!!!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.