在 javascript return 语句中使用 && 运算符



我正在学习javascript,我在javascript代码中应用过滤器,在下面的代码中,是否有可能即兴编写此代码?我希望如果有人能告诉我如何只使用一个变量来存储年龄大于18和小于18的结果。有没有可能使用&&操作符在单个返回语句?因此,在最终结果中,我可以将数据显示为

18岁、21岁、24岁、30岁、32岁以下的选民可以投票。10、15岁以下的选民不能投票

//代码

const ages = [10, 15, 18, 21, 24, 30, 32];
const ageResultabove = ages.filter((ageabove) => {
return ageabove >= 18;
});
const ageResultbelow = ages.filter((ageabelow) => {
return ageabelow < 18;
});
console.log(`Voters under ${ageResultabove} category can vote`);
console.log(`Voters under ${ageResultbelow} category cannot vote`);

结果应该是这样的18岁、21岁、24岁、30岁、32岁以下的选民可以投票。10、15岁以下的选民不能投票

您可以使用一个对象来表示两个类别,cats,使用Array#reduce方法,如下面的演示:

const ages = [10, 15, 18, 21, 24, 30, 32];
const cats = ages.reduce(
(lists, age) => lists[age >= 18 ? 'above' : 'below'].push(age) && lists, {below:[],above:[]}
);
console.log( cats );

WithfilterMethod…

可以将两个结果组合成一个对象,如下所示:

const ages = [10, 15, 18, 21, 24, 30, 32];
const above = ages.filter((ageabove) => {
return ageabove >= 18;
});
const below = ages.filter((ageabelow) => {
return ageabelow < 18;
});
const obj = {above, below};
console.log(`Voters under ${obj.above} category can vote`);
console.log(`Voters under ${obj.below} category cannot vote`);

您可以使用一个函数来检查成人年龄,并根据此结果在单个循环中分组为true和false。

const
ages = [10, 15, 18, 21, 24, 30, 32],
isAdult = age => age >= 18,
result = ages.reduce((accumulator, age) => {
accumulator[isAdult(age)].push(age);
return accumulator
}, { true: [], false: [] });
console.log(`Voters under ${result.true.join(', ')} category can vote`);
console.log(`Voters under ${result.false.join(', ')} category cannot vote`);

首先,您试图将string数据类型与number数据类型进行比较以解决此问题,要么将数组内的项目更改为普通数字,例如[10, 12, 18, ...],要么在过滤条件内使用parseInt()函数。

parseInt(ageabove, 10) >= 18

,是的,parseInt函数是内置在javascript中。

然后在ageResultAbove中添加join.

console.log(`Voters under ${ageResultabove.join(", ")} category can vote`);

完整代码为:

const ages = [10, 15, 18, 21, 24, 30, 32];
const ageResultabove = ages.filter((a) => a >= 18);
const ageResultbelow = ages.filter((a) => a < 18);
console.log(`Voters under ${ageResultabove.join(", ")} category can vote`);
console.log(`Voters under ${ageResultbelow.join(", ")} category cannot vote`);

为什么不直接将两个字符串连接起来呢?如:

console.log(`Voters under ${ageResultabove} category can vote. Voters under ${ageResultbelow} category cannot vote`);

,,操作符用于逻辑比较,因此如果使用它,结果将是一个布尔值(True或False)。

最新更新