No puedo hacer esto. Me gustaría que el parámetro insertado en la función me devuelva ese valor específico del objeto.
Si inserto "over" me gustaría una matriz con los nombres cuya edad es mayor de 50 años, mientras que, por el contrario, si inserto under, ¡no funciona!
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');
¡gracias de antemano!
Por lo que entiendo, si desea que se devuelva como una matriz de names
, debe devolver solo el name
, que es como una cadena, en lugar de devolver el objeto de name
.
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);
Parece que solo está registrando nameUnder50 pero está pasando 'over' a la función
nameOver50
es la matriz que debe registrar o ambas:
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');
No está utilizando el resultado de filter()
, por lo que debería ser forEach()
.
Debe mostrar la matriz apropiada dependiendo de 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');