Take an object from within an array and send it to another array?

Asked

Viewed 110 times

2

I need to take an object from within an array and send that same object to another array. See:

todasAsCartas:[
            { id: 1, valor: 2, naipe: 'Paus'   },  { id: 2, valor: 2, naipe: 'Copas'   },  { id: 3, valor: 3, naipe: 'Espadas'   },  { id: 4, valor: 2, naipe: 'Ouros'   },
            { id: 5, valor: 3, naipe: 'Paus'   },  { id: 6, valor: 3, naipe: 'Copas'   },  { id: 7, valor: 3, naipe: 'Espadas'   },  { id: 8, valor: 3, naipe: 'Ouros'   },
            { id: 9, valor: 4, naipe: 'Paus'   },  { id: 10, valor: 4, naipe: 'Copas'  },  { id: 11, valor: 4, naipe: 'Espadas'  },  { id: 12, valor: 4, naipe: 'Ouros'  },
            { id: 13, valor: 5, naipe: 'Paus'  },  { id: 14, valor: 5, naipe: 'Copas'  },  { id: 15, valor: 5, naipe: 'Espadas'  },  { id: 16, valor: 5, naipe: 'Ouros'  },
            { id: 17, valor: 6, naipe: 'Paus'  },  { id: 18, valor: 6, naipe: 'Copas'  },  { id: 19, valor: 6, naipe: 'Espadas'  },  { id: 20, valor: 6, naipe: 'Ouros'  },
            { id: 21, valor: 7, naipe: 'Paus'  },  { id: 22, valor: 7, naipe: 'Copas'  },  { id: 23, valor: 7, naipe: 'Espadas'  },  { id: 24, valor: 7, naipe: 'Ouros'  },
            { id: 25, valor: 8, naipe: 'Paus'  },  { id: 26, valor: 8, naipe: 'Copas'  },  { id: 27, valor: 8, naipe: 'Espadas'  },  { id: 28, valor: 8, naipe: 'Ouros'  },
            { id: 29, valor: 9, naipe: 'Paus'  },  { id: 30, valor: 9, naipe: 'Copas'  },  { id: 31, valor: 9, naipe: 'Espadas'  },  { id: 32, valor: 9, naipe: 'Ouros'  },
            { id: 33, valor: 10, naipe: 'Paus' },  { id: 34, valor: 10, naipe: 'Copas' },  { id: 35, valor: 10, naipe: 'Espadas' },  { id: 36, valor: 10, naipe: 'Ouros' },
            { id: 37, valor: 11, naipe: 'Paus' },  { id: 38, valor: 11, naipe: 'Copas' },  { id: 39, valor: 11, naipe: 'Espadas' },  { id: 40, valor: 11, naipe: 'Ouros' },
            { id: 41, valor: 12, naipe: 'Paus' },  { id: 42, valor: 12, naipe: 'Copas' },  { id: 43, valor: 12, naipe: 'Espadas' },  { id: 44, valor: 12, naipe: 'Ouros' },
            { id: 45, valor: 13, naipe: 'Paus' },  { id: 46, valor: 13, naipe: 'Copas' },  { id: 47, valor: 13, naipe: 'Espadas' },  { id: 48, valor: 13, naipe: 'Ouros' },
            { id: 49, valor: 14, naipe: 'Paus' },  { id: 50, valor: 14, naipe: 'Copas' },  { id: 51, valor: 14, naipe: 'Espadas' },  { id: 52, valor: 14, naipe: 'Ouros' },
            
        ]

I need to take one of these objects from this array "all: [ ]"...

Does anyone have any idea how to solve this in Javascript?

3 answers

2

let cartasNaMesa = [
  { id: 1, valor: 2, naipe: 'Paus'   },  { id: 2, valor: 2, naipe: 'Copas'   },  { id: 3, valor: 3, naipe: 'Espadas'   },  { id: 4, valor: 2, naipe: 'Ouros'   },
  { id: 5, valor: 3, naipe: 'Paus'   },  { id: 6, valor: 3, naipe: 'Copas'   },  { id: 7, valor: 3, naipe: 'Espadas'   },  { id: 8, valor: 3, naipe: 'Ouros'   },
  { id: 9, valor: 4, naipe: 'Paus'   },  { id: 10, valor: 4, naipe: 'Copas'  },  { id: 11, valor: 4, naipe: 'Espadas'  },  { id: 12, valor: 4, naipe: 'Ouros'  },
  { id: 13, valor: 5, naipe: 'Paus'  },  { id: 14, valor: 5, naipe: 'Copas'  },  { id: 15, valor: 5, naipe: 'Espadas'  },  { id: 16, valor: 5, naipe: 'Ouros'  },
  { id: 17, valor: 6, naipe: 'Paus'  },  { id: 18, valor: 6, naipe: 'Copas'  },  { id: 19, valor: 6, naipe: 'Espadas'  },  { id: 20, valor: 6, naipe: 'Ouros'  },
  { id: 21, valor: 7, naipe: 'Paus'  },  { id: 22, valor: 7, naipe: 'Copas'  },  { id: 23, valor: 7, naipe: 'Espadas'  },  { id: 24, valor: 7, naipe: 'Ouros'  },
  { id: 25, valor: 8, naipe: 'Paus'  },  { id: 26, valor: 8, naipe: 'Copas'  },  { id: 27, valor: 8, naipe: 'Espadas'  },  { id: 28, valor: 8, naipe: 'Ouros'  },
  { id: 29, valor: 9, naipe: 'Paus'  },  { id: 30, valor: 9, naipe: 'Copas'  },  { id: 31, valor: 9, naipe: 'Espadas'  },  { id: 32, valor: 9, naipe: 'Ouros'  },
  { id: 33, valor: 10, naipe: 'Paus' },  { id: 34, valor: 10, naipe: 'Copas' },  { id: 35, valor: 10, naipe: 'Espadas' },  { id: 36, valor: 10, naipe: 'Ouros' },
  { id: 37, valor: 11, naipe: 'Paus' },  { id: 38, valor: 11, naipe: 'Copas' },  { id: 39, valor: 11, naipe: 'Espadas' },  { id: 40, valor: 11, naipe: 'Ouros' },
  { id: 41, valor: 12, naipe: 'Paus' },  { id: 42, valor: 12, naipe: 'Copas' },  { id: 43, valor: 12, naipe: 'Espadas' },  { id: 44, valor: 12, naipe: 'Ouros' },
  { id: 45, valor: 13, naipe: 'Paus' },  { id: 46, valor: 13, naipe: 'Copas' },  { id: 47, valor: 13, naipe: 'Espadas' },  { id: 48, valor: 13, naipe: 'Ouros' },
  { id: 49, valor: 14, naipe: 'Paus' },  { id: 50, valor: 14, naipe: 'Copas' },  { id: 51, valor: 14, naipe: 'Espadas' },  { id: 52, valor: 14, naipe: 'Ouros' },
];

let cartasNaMao = [];

const cartasParaComprar = 5;

for (let i = 0; i < cartasParaComprar; i++) {
  const numeroAleatorio = Math.floor(Math.random() * cartasNaMesa.length);
  const cartaAleatoria = cartasNaMesa[numeroAleatorio];

  // Remove a carta aleatória da mesa
  cartasNaMesa = cartasNaMesa.filter(carta => carta.id !== cartaAleatoria.id);

  // E coloca ela na mão
  cartasNaMao.push(cartaAleatoria);
}

console.log('Cartas na mesa:\n', cartasNaMesa);
console.log('Cartas na mão:\n', cartasNaMao);

  • 1

    Excellent @Michaelpacheco!

  • 1

    Dude, that’s it.. It only lacked a "const letter = 0" at the beginning there before the for. It worked here. Ball show. Thank you.

  • Glad it worked. No need for a const carta = 0 outside the for. The line const cartaAleatoria = cartasNaMesa[numeroAleatorio]; already solves the problem :)

1

Use .push() and .splice() after generating a random number up to the size of the main array:

var cartasNaMao = [];
var todasAsCartas =[
   { id: 1, valor: 2, naipe: 'Paus'   },  { id: 2, valor: 2, naipe: 'Copas'   },  { id: 3, valor: 3, naipe: 'Espadas'   },  { id: 4, valor: 2, naipe: 'Ouros'   },
   { id: 5, valor: 3, naipe: 'Paus'   },  { id: 6, valor: 3, naipe: 'Copas'   },  { id: 7, valor: 3, naipe: 'Espadas'   },  { id: 8, valor: 3, naipe: 'Ouros'   },
   { id: 9, valor: 4, naipe: 'Paus'   },  { id: 10, valor: 4, naipe: 'Copas'  },  { id: 11, valor: 4, naipe: 'Espadas'  },  { id: 12, valor: 4, naipe: 'Ouros'  },
   { id: 13, valor: 5, naipe: 'Paus'  },  { id: 14, valor: 5, naipe: 'Copas'  },  { id: 15, valor: 5, naipe: 'Espadas'  },  { id: 16, valor: 5, naipe: 'Ouros'  },
   { id: 17, valor: 6, naipe: 'Paus'  },  { id: 18, valor: 6, naipe: 'Copas'  },  { id: 19, valor: 6, naipe: 'Espadas'  },  { id: 20, valor: 6, naipe: 'Ouros'  },
   { id: 21, valor: 7, naipe: 'Paus'  },  { id: 22, valor: 7, naipe: 'Copas'  },  { id: 23, valor: 7, naipe: 'Espadas'  },  { id: 24, valor: 7, naipe: 'Ouros'  },
   { id: 25, valor: 8, naipe: 'Paus'  },  { id: 26, valor: 8, naipe: 'Copas'  },  { id: 27, valor: 8, naipe: 'Espadas'  },  { id: 28, valor: 8, naipe: 'Ouros'  },
   { id: 29, valor: 9, naipe: 'Paus'  },  { id: 30, valor: 9, naipe: 'Copas'  },  { id: 31, valor: 9, naipe: 'Espadas'  },  { id: 32, valor: 9, naipe: 'Ouros'  },
   { id: 33, valor: 10, naipe: 'Paus' },  { id: 34, valor: 10, naipe: 'Copas' },  { id: 35, valor: 10, naipe: 'Espadas' },  { id: 36, valor: 10, naipe: 'Ouros' },
   { id: 37, valor: 11, naipe: 'Paus' },  { id: 38, valor: 11, naipe: 'Copas' },  { id: 39, valor: 11, naipe: 'Espadas' },  { id: 40, valor: 11, naipe: 'Ouros' },
   { id: 41, valor: 12, naipe: 'Paus' },  { id: 42, valor: 12, naipe: 'Copas' },  { id: 43, valor: 12, naipe: 'Espadas' },  { id: 44, valor: 12, naipe: 'Ouros' },
   { id: 45, valor: 13, naipe: 'Paus' },  { id: 46, valor: 13, naipe: 'Copas' },  { id: 47, valor: 13, naipe: 'Espadas' },  { id: 48, valor: 13, naipe: 'Ouros' },
   { id: 49, valor: 14, naipe: 'Paus' },  { id: 50, valor: 14, naipe: 'Copas' },  { id: 51, valor: 14, naipe: 'Espadas' },  { id: 52, valor: 14, naipe: 'Ouros' },
];

var rand = Math.round(Math.random() * todasAsCartas.length); // nº randômico dentro do range da array principal
cartasNaMao.push(todasAsCartas[rand]); // insere o obj randômico na segunda array
todasAsCartas.splice(rand,1); // remove o obj da array principal

console.log("Na mão: ",cartasNaMao, "Todas: ",todasAsCartas);

0

First step is to define the random number based on the number of cards. Then, just go through the list and save that value, and remove that value from the current list.

It is possible to use the filter to search within the chart listing for a specific card.

And to remove can use the splice(index, 1) in the listing.

let cartasNaMesa = [
  { id: 1, valor: 2, naipe: 'Paus'   },  { id: 2, valor: 2, naipe: 'Copas'   },  { id: 3, valor: 3, naipe: 'Espadas'   },  { id: 4, valor: 2, naipe: 'Ouros'   },
  { id: 5, valor: 3, naipe: 'Paus'   },  { id: 6, valor: 3, naipe: 'Copas'   },  { id: 7, valor: 3, naipe: 'Espadas'   },  { id: 8, valor: 3, naipe: 'Ouros'   },
  { id: 9, valor: 4, naipe: 'Paus'   },  { id: 10, valor: 4, naipe: 'Copas'  },  { id: 11, valor: 4, naipe: 'Espadas'  },  { id: 12, valor: 4, naipe: 'Ouros'  },
  { id: 13, valor: 5, naipe: 'Paus'  },  { id: 14, valor: 5, naipe: 'Copas'  },  { id: 15, valor: 5, naipe: 'Espadas'  },  { id: 16, valor: 5, naipe: 'Ouros'  },
  { id: 17, valor: 6, naipe: 'Paus'  },  { id: 18, valor: 6, naipe: 'Copas'  },  { id: 19, valor: 6, naipe: 'Espadas'  },  { id: 20, valor: 6, naipe: 'Ouros'  },
  { id: 21, valor: 7, naipe: 'Paus'  },  { id: 22, valor: 7, naipe: 'Copas'  },  { id: 23, valor: 7, naipe: 'Espadas'  },  { id: 24, valor: 7, naipe: 'Ouros'  },
  { id: 25, valor: 8, naipe: 'Paus'  },  { id: 26, valor: 8, naipe: 'Copas'  },  { id: 27, valor: 8, naipe: 'Espadas'  },  { id: 28, valor: 8, naipe: 'Ouros'  },
  { id: 29, valor: 9, naipe: 'Paus'  },  { id: 30, valor: 9, naipe: 'Copas'  },  { id: 31, valor: 9, naipe: 'Espadas'  },  { id: 32, valor: 9, naipe: 'Ouros'  },
  { id: 33, valor: 10, naipe: 'Paus' },  { id: 34, valor: 10, naipe: 'Copas' },  { id: 35, valor: 10, naipe: 'Espadas' },  { id: 36, valor: 10, naipe: 'Ouros' },
  { id: 37, valor: 11, naipe: 'Paus' },  { id: 38, valor: 11, naipe: 'Copas' },  { id: 39, valor: 11, naipe: 'Espadas' },  { id: 40, valor: 11, naipe: 'Ouros' },
  { id: 41, valor: 12, naipe: 'Paus' },  { id: 42, valor: 12, naipe: 'Copas' },  { id: 43, valor: 12, naipe: 'Espadas' },  { id: 44, valor: 12, naipe: 'Ouros' },
  { id: 45, valor: 13, naipe: 'Paus' },  { id: 46, valor: 13, naipe: 'Copas' },  { id: 47, valor: 13, naipe: 'Espadas' },  { id: 48, valor: 13, naipe: 'Ouros' },
  { id: 49, valor: 14, naipe: 'Paus' },  { id: 50, valor: 14, naipe: 'Copas' },  { id: 51, valor: 14, naipe: 'Espadas' },  { id: 52, valor: 14, naipe: 'Ouros' },
];

//gera um número aleatório com base na quantidade de cartas
const randomNumero = Math.floor(Math.random() * cartasNaMesa.length);

//Percorre a lista de cartas na mesa e salva na variavel castasNaMao apenas a carta aleatória.
const cartasNaMao = cartasNaMesa.filter(function(val, index){

  const cartaAleatoria = cartasNaMesa[randomNumero];

  if(cartaAleatoria.id === val.id){      
      cartasNaMesa.splice(index, 1 );
      return true;
  }
})

console.log('Cartas na mesa:\n', cartasNaMesa);
console.log('Cartas na mão:\n', cartasNaMao);

Browser other questions tagged

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