Doubt about JS objects with array

2

I'm in doubt about how to make an object that has an array inside, I do not know if that's possible, but it goes 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.
    }
]
    
asked by anonymous 13.02.2018 / 16:41

1 answer

2

Creating the products

  

How to make an object that has array inside

You can create an object within an yes array. To do this, simply use the Array objects. 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 products

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

Since the tamanho property is an array, we can change it using the 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 information

To read information simply use a repeat structure such as for or method forEach of 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 about a product that has a certain characteristic, 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 );
    
13.02.2018 / 17:32