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

121
Visualizações
Pick random objects from an array with a specific property which is unique

I'm looking for a method to pick random objects from an array of objects where a specific property has a unique value.

Example:

const array = [
  {
    name:'foo',
    message: 'hello'
  },
  {
    name:'foo',
    message: 'world'
  },
  {
    name:'bar',
    message: 'hello'
  },
  {
    name:'bar',
    message: 'world'
  },
]

function theMagicMethod(elementsCount, specificUniqueProperty){
// ...
};

console.log(theMagicMethod(2, name));

// Expected output: [{name:'foo', message:'hello'},{name:'bar', message:'hello'}]
// or [{name:'foo', message:'hello'},{name:'bar', message:'world'}]
// etc...

// BUT NEVER WANT: [{name:'foo', message:'hello'},{name:'foo', message:'world'}]

I've tried to use do ... while or while ... but it always crash when I conditionally add an element to my result array.:


let items = [];
do{
  let item = array[Math.floor(Math.random()*array.length)];

  let found = false;
  for(var i = 0; i < vendors.length; i++) {
      if (vendors[i].Name == 'Magenic') {
          found = true;
          break;
      }
  }

  if(!found){
    items.push(item)
  }

} while (items.length < 3)
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Shuffle the objects, use a set to filter unique values, return the first N...

// fy shuffle, thanks to https://stackoverflow.com/a/2450976/294949
function shuffle(array) {
  let currentIndex = array.length,  randomIndex;
  while (currentIndex != 0) {
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;
    [array[currentIndex], array[randomIndex]] = [
      array[randomIndex], array[currentIndex]];
  }
  return array;
}

function theMagicMethod(elementsCount, specificUniqueProperty) {
  let shuffled = shuffle(array.slice());
  let uniqueValues = new Set()
  let unique = shuffled.filter(el => {
    const value = el[specificUniqueProperty];
    const keep = !uniqueValues.has(value)
    uniqueValues.add(value);
    return keep;
  })
  return unique.slice(0, elementsCount);
}
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