Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
how can I filter an array of objects based on a specific property and return only one property when I insert the parameter into the function?

I can't do this thing. I would like the parameter inserted in the function to return that specific value of the object to me.

If I insert "over" I would like an array with the names whose age is over 50, while on the contrary if I insert under, it doesn't work!

const person = [
  { name: 'Jessica', age: 25 },
  { name: 'Ilary', age: 27 },
  { name: 'Frank', age: 70 },
  { name: 'Dan', age: 65 },
  { name: 'Pop', age: 22 },
  { name: 'Maur', age: 68 },
];

let nameOver50 = [];
let nameUnder50 = [];

function check(enter) {
  person.filter(({ name, age }) => {
    if (age > 50 && enter === 'over') {
      nameOver50.push({ name });
    } else if (age < 50 && enter === 'under') {
      nameUnder50.push(name);
    }
  });
  console.log(nameUnder50);
}

check('over');

thank you in advance!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

From what I understand, if you want it to return as an array of names, then you should return the name only, which is as a string, instead of returning the name object.

const person = [
  { name: 'Jessica', age: 25 },
  { name: 'Ilary', age: 27 },
  { name: 'Frank', age: 70 },
  { name: 'Dan', age: 65 },
  { name: 'Pop', age: 22 },
  { name: 'Maur', age: 68 },
];

let nameOver50 = [];
let nameUnder50 = [];

function check(enter) {
  enter === 'over'
    ? (nameOver50 = person
        .filter(({ name, age }) => age > 50)
        .map(({ name }) => name))
    : (nameUnder50 = person
        .filter(({ name, age }) => age < 50)
        .map(({ name }) => name));
}

check('over');
check('under');

console.log(nameOver50);
console.log(nameUnder50);

about 4 years ago · Juan Pablo Isaza Denunciar

0

It looks like you're only logging nameUnder50 yet you are passing 'over' to the function

nameOver50 is the array you should be logging or both:

const person = [
    { name: 'Jessica', age: 25 },
    { name: 'Ilary', age: 27 },
    { name: 'Frank', age: 70 },
    { name: 'Dan', age: 65 },
    { name: 'Pop', age: 22 },
    { name: 'Maur', age: 68 },
  ];
  
  let nameOver50 = [];
  let nameUnder50 = [];
  
  function check(enter) {
    person.filter(({ name, age }) => {
      if (age > 50 && enter === 'over') {
        nameOver50.push( name );
        // nameOver50.push({ name });
        // You could alternatively just push the name, if you want an array of the names only
      } else if (age < 50 && enter === 'under') {
        nameUnder50.push(name);
      }
    });
    console.log(nameUnder50);
    console.log(nameOver50);
  }
  
  check('over');
  check('under');

about 4 years ago · Juan Pablo Isaza Denunciar

0

You're not using the result of filter(), so it should be forEach().

You need to display the appropriate array depending on enter.

const person = [
  { name: 'Jessica', age: 25 },
  { name: 'Ilary', age: 27 },
  { name: 'Frank', age: 70 },
  { name: 'Dan', age: 65 },
  { name: 'Pop', age: 22 },
  { name: 'Maur', age: 68 },
];

let nameOver50 = [];
let nameUnder50 = [];

function check(enter) {
  person.forEach(({ name, age }) => {
    if (age > 50 && enter === 'over') {
      nameOver50.push({ name });
    } else if (age < 50 && enter === 'under') {
      nameUnder50.push(name);
    }
  });
  if (enter === 'over') {
    console.log(nameOver50);
  } else {
    console.log(nameUnder50);
  }
}

check('over');

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda