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

118
Visualizações
Finding items from an array of objects based on a selected item value in JS

I have an array like this:

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string2", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

And now I have a string like 'string12'. Now with this string the output I want is to find the items that contains this string which is like:

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

Here's what I have tried:

const search = (nameKey, myArray) => {
  for (var i = 0; i < myArray.length; i++) {
    var newArr = [];
    if (myArray[i].name.slice(0, nameKey.length + 1) === nameKey) {
      newArr.push(myArray[i]);
    }
    return newArr;
  }

}

var array = [
  { name:"string123", value:"this", other: "that" },
  { name:"string2", value:"this", other: "that" },
  { name:"string12", value:"ths", other: "that" },
];

var resultObject = search("string12", array);
console.log(resultObject);

But my solution is returning a blank array. Where am I going wrong with this?

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

0

The following things went wrong in your implementation:

  1. Move initialization outside the for loop.
  2. You don't need +1 when doing .slice().
  3. Return statement return newArr should be outside the for loop.
const search = (nameKey, myArray) => {
    var newArr = [];
  
  for (var i = 0; i < myArray.length; i++) {
    if (myArray[i].name.slice(0, nameKey.length) === nameKey) {
      newArr.push(myArray[i]);
    }
  }
    return newArr;
}

var array = [
  { name:"string123", value:"this", other: "that" },
  { name:"string2", value:"this", other: "that" },
  { name:"string12", value:"ths", other: "that" },
];

var resultObject = search("string12", array);
console.log(resultObject);
about 4 years ago · Juan Pablo Isaza Relatório

0

Using Array#filter and String#includes:

const arr = [ { name:"string123", value:"this", other: "that" }, { name:"string2", value:"this", other: "that" }, { name:"string12", value:"ths", other: "that" } ];

const res = arr.filter(({ name }) => name.includes('string12'));

console.log(res);

You can use String#startsWith instead of includes if you only need to check if the name starts with the string.

about 4 years ago · Juan Pablo Isaza Relatório

0

You could do this with Array.filter and startsWith function (docs). If you want to check string12 anywhere in name use includes instead of startsWith

var array = [
    { name:"string123", value:"this", other: "that" },
    { name:"string2", value:"this", other: "that" },
    { name:"string12", value:"ths", other: "that" },
];

const filtered = array.filter(item => item.name.startsWith("string12"));

console.log(filtered);

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