• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

154
Views
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 3 years ago · Juan Pablo Isaza
3 answers
Answer question

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 3 years ago · Juan Pablo Isaza Report

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 3 years ago · Juan Pablo Isaza Report

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 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error