Javascript 尝试在对象中使用if-else语句的for循环
我正在尝试编写一个函数,该函数将遍历包含对象的变量。如果传入的名字是对象属性,则应为true。如果不是,你应该得到假。然而,无论我通过什么函数,我总是得到false。非常感谢您的帮助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"] }, {
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;
});
}