Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

255
Visualizações
How can I get objects in my array to only show up once? JavaScript

Hey I'm struggling and was hoping that maybe someone here could help. I'm making a web app that uses a big array of objects that looks similar to this:

var arr = [
{
    prop1 : "foo",
    prop2 : ["foo1", "foo2", "foo3", "foo4"],
    prop3 : "foo5",
    prop4 : "foo6",
},
{
    prop1 : "bar",
    prop2 : ["bar1", "bar2", "bar3", "bar4"],
    prop3 : "bar5",
    prop4 : "bar6",
}, 
{
    prop1 : "something",
    prop2 : ["something1", "something2", "something3", "something4"],
    prop3 : "something5",
    prop4 : "something6",
}
]

The array is much bigger than that but you get the idea. I want to display only 5 objects from the array at random each time the code is run which I did like this:

randomArr = arr.sort(() => Math.random() - .5);
spliceArr = randomArr.splice(5);

It works, but it sometimes shows objects from the main array multiple times. How can I write the code so the it will return objects from the array only once?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You could solve this by creating an array of unique random indicies, then return an array of objects that correspond to those random indices.

A set can be used to ensure all generated indices are unique.

function getNRandomObjects(objectArray,numberOfObjects) {

  // use a set to ensure at most only one instance of an index is
  // generated
  const indices = new Set();

  while(indices.size < numberOfObjects) {
    //generate a random index and add it to the set
    indices.add( Math.floor(Math.random() * objectArray.length));
  }

  // convert the set of indices into an array, 
  // then map each index to the object that corresponds
  // to that index.
  return Array.from(indices).map(i=>objectArray[i]);
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda