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!
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);
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');
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');