Javascript 尝试在对象中使用if-else语句的for循环

Javascript 尝试在对象中使用if-else语句的for循环,javascript,if-statement,for-loop,Javascript,If Statement,For Loop,我正在尝试编写一个函数,该函数将遍历包含对象的变量。如果传入的名字是对象属性,则应为true。如果不是,你应该得到假。然而,无论我通过什么函数,我总是得到false。非常感谢您的帮助 var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543", "likes": ["Pizza", "Coding", "Brownie Points"] }, {

我正在尝试编写一个函数,该函数将遍历包含对象的变量。如果传入的名字是对象属性,则应为true。如果不是,你应该得到假。然而,无论我通过什么函数,我总是得到false。非常感谢您的帮助

var contacts = [
{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
},
{
    "firstName": "Harry",
    "lastName": "Potter",
    "number": "0994372684",
    "likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
    "firstName": "Sherlock",
    "lastName": "Holmes",
    "number": "0487345643",
    "likes": ["Intriguing Cases", "Violin"]
},
{
    "firstName": "Kristian",
    "lastName": "Vos",
    "number": "unknown",
    "likes": ["Javascript", "Gaming", "Foxes"]
}
];


function attempt(firstName){
for(var i = 0;i < contacts.length; i++){
    if(contacts[i].firstName==firstName){
    return true;
    } else {
      return false;
    }
 }  
}
var联系人=[
{
“名字”:“Akira”,
“姓氏”:“莱恩”,
“编号”:“0543236543”,
“喜欢”:[“披萨”、“编码”、“布朗尼点数”]
},
{
“名字”:“哈利”,
“姓氏”:“波特”,
“编号”:“0994372684”,
“喜欢”:[“霍格沃茨”、“魔法”、“海格”]
},
{
“名字”:“夏洛克”,
“姓氏”:“福尔摩斯”,
“编号”:“0487345643”,
“喜欢”:[“有趣的案例”,“小提琴”]
},
{
“名字”:“克里斯蒂安”,
“姓氏”:“Vos”,
“编号”:“未知”,
“喜欢”:[“Javascript”、“游戏”、“狐狸”]
}
];
函数尝试(名字){
对于(变量i=0;i
思考一下逻辑:第一个循环会发生什么?函数对
if
/
else
的响应是什么?正确的!它立即返回
true
false
,而不循环遍历其余条目

您需要完全删除
else
,并将
return false
移动到循环外部:

function attempt(firstName) {
    for (var i = 0; i < contacts.length; i++) {
        if (contacts[i].firstName == firstName) {
            return true;
        }
    }
    return false;
}

这种情况经常发生,必须有一个dupetarget来处理它…你的
标题
没有要求任何东西或暗示问题。旁注:如果你发现自己在写
If(a==b){return true;}else{return false;}
,停下来写
return a==b取而代之。它的作用完全相同。@ibrahimmahrir-编辑时请小心,注意“其他人编辑了此”警告。您是想吹走
==
?因为没有它,您可以传入
0
并匹配“”。很难想象这就是问题中描述的意图。@pvg:
=
==
相比,与问题无关。如果你想建议一种编码风格,注释是更合适的地方。它与问题并不无关,所呈现的代码可能包含多个问题,而这一个就是这样。这不是风格,问题中描述的预期行为实际上不会与此答案中的代码匹配。在这种情况下,0匹配“”不会是一个风格问题,这是一个错误。@pvg:您假定a)他们将向函数传递一个非字符串(没有指示),B)他们将在数组中使用
作为名字(没有指示)。问题中没有提到任何其他类型的浮动,答案中的函数正是问题所说的它应该做的。
function attempt(firstName) {
    return contacts.some(function(entry) {
        return entry.firstName == firstName;
    });
}