首页 > 解决方案 > 与 && 或 || 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>
                `;
        }
    }
}

标签: javascriptarraysobject

解决方案


您有一个与性别相同的部分,而另一个与年龄相同的部分小于25或等于或大于25

比较不需要括号。

genderInput === data.profiles[i].gender && 
(ageInput < 25 && data.profiles[i].age < 25 || ageInput >= 25 && data.profiles[i].age >= 25)

推荐阅读