我不能做这件事。我希望函数中插入的参数能将对象的特定值返回给我
如果我插入";超过";我想要一个年龄超过50岁的名字的数组,而相反,如果我在下面插入,它就不起作用了!
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');
提前感谢!
根据我的理解,如果你想让它作为names
的数组返回,那么你应该只返回name
,它是一个字符串,而不是返回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);
看起来您只记录了nameUnder50,但您正在将"over"传递给函数
nameOver50
是您应该记录的阵列,或者两者都记录:
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');
您没有使用filter()
的结果,所以它应该是forEach()
。
您需要根据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');