在函数中插入参数时,如何根据特定属性筛选对象数组并只返回一个属性



我不能做这件事。我希望函数中插入的参数能将对象的特定值返回给我

如果我插入";超过";我想要一个年龄超过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');

最新更新