javascript - 与 && 或 || JavaScript 中的组合
问题描述
任务很快解释:制作一个约会网站,需要 4 个结果。女性 25 岁及以上,女性 24 岁及以下。男性 25 岁及以上,女性 24 岁及以下。现在我想再有 4 个结果;所有女性,所有男性,所有 25 岁及以上,所有 24 岁及以下。
我八月份刚开始攻读学士学位,之前没有编写任何代码。我现在正在处理我们得到的一些任务,这是我们必须交付的任务,即工作要求。我使用数组交付它并完成了工作,并使用了另一个 if 语句。到目前为止一切都很好。但现在稍后,我们刚刚了解了对象字面量,我想检查是否可以以某种方式缩短代码。我实际上只使用了下面的 1x if 语句。
我正在努力解决 OR || 和 && 组合。我在上面看到了一些线程,说括号应该放在&&之前和之后,但我似乎无法理解。下面的代码确实适用于 4 种可能的组合,我想检查是否有人可以看到我如何添加 || && 组合更聪明,可以在同一个 if 语句中获得我想要的 4 个以上组合?还是我必须做一个新的 else if 声明?另外,您将如何解决这个问题,您将使用哪种类型的存储变量?我有关于在函数中使用一些参数来缩短一些东西的想法,但我还没有想出一些东西。
var result = document.getElementById('result');
var searchBtn = document.getElementById('search-btn');
var data = {
profiles:
[{
name: 'Maren',
age: 26,
gender: 'female',
description: 'If you do not like me, I will be attracted by you.',
image: 'kvinne1.jpg'
}, {
name: 'Indie',
age: 23,
gender: 'female',
description: 'Love flowers',
image: 'kvinne2.jpg'
}, {
name: 'Felix',
age: 22,
gender: 'male',
description: 'Snowboard, that is lyfe',
image: 'mann2.jpg'
}, {
name: 'Jon',
age: 26,
gender: 'male',
description: 'Love to fish, and I will learn you to fish if you want!',
image: 'mann1.jpg'
}]
};
function getResult() {
result.innerHTML = '';
var ageInput = document.getElementById('age-input').value;
var genderInput = document.getElementById('gender-input').value.toLowerCase();
for (let i = 0; i < data.profiles.length; i++) {
if ((genderInput === data.profiles[i].gender) && (ageInput < 25) && (data.profiles[i].age < 25) || (genderInput === data.profiles[i].gender) && (ageInput >= 25) && (data.profiles[i].age >= 25)) {
result.innerHTML += `
<img src='${data.profiles[i].image}'>
<h2>${data.profiles[i].name}</h2>
<p>Age: ${data.profiles[i].age}</p>
<p>${data.profiles[i].description}</p>
<hr>
`;
}
}
}
解决方案
您有一个与性别相同的部分,而另一个与年龄相同的部分小于25
或等于或大于25
。
比较不需要括号。
genderInput === data.profiles[i].gender &&
(ageInput < 25 && data.profiles[i].age < 25 || ageInput >= 25 && data.profiles[i].age >= 25)
推荐阅读
- javascript - 如何使用 React Router 嵌套一些路由?我想保留一个标题组件
- javascript - 如果任何元素为真,如何迭代任何数组以返回值“真”
- r - 在同一工作表中提取多个数据文件
- android - 无法在 WorkManager 中未调用 Looper.prepare() 的线程内创建处理程序
- ubuntu - 如何下载python2.7 2.7.6-8ubuntu0.5 debian包?
- vue.js - 使用 VueJS 的 Web 组件
- java - for循环的字符替换方法问题
- php - 传递给 App\Entity\User::setToken() 的参数 1 必须是 App\Entity\Token 或 null 的实例,给定字符串,调用
- c# - 可以向“Nobody Instance”actor 发送消息吗?有没有什么副作用?
- php - 如何使用 HTTP 身份验证从 dApp 到 Laravel 服务器的用户身份验证和记忆?