一个Javascript函数可以告诉我两个人的名字,姓氏和电子邮件是否相同

时间:2014-09-22 22:36:29

标签: javascript jquery html5

我想创建一个可以接受任何两个人对象的Javascript函数,如果它们完全相同(例如,如果firstName,lastName和email值都匹配)则返回true,如果它们不相同则返回false。这是我到目前为止所得到的,但我还没有任何逻辑,因为我不确定是否会使用if else语句或其他内容。

<!DOCTYPE html>

<html>
<head>
    <title>Question 6</title>
    <script type="text/javascript" src="js/libs/jquery/jquery.js"></script>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script>
var person1 = {
firstName: "Mike",
lastName: "Smith",
email: "msmith@yahoo.com"
};

var person2 = {
firstName: "John",
lastName: "Smith",
email: "jsmith@yahoo.com"
};

$(document).ready (function comparePersons(person1, person2) {

if (person1.firstName !== person2.firstName)
    return false;
if (person1.lastName !== person2.lastName)
    return false;
if (person1.email !== person2.email)
    return false;

 else
 return true;

});
$("#output").html(value);

if (return  true)
string "True";

else (return  false)
string "False";

    </script>

</head>
<body>
    <div id="output">

    </div>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

编辑:以较短的方式(特别是如果你想比较更多东西),我们只需设置一个我们想要比较的所有属性的数组,然后循环它们:

function areTheyTheSame(p1, p2) {
  var criterias = ['email', 'firstName', 'lastName'];

  for (var i=0; i<criterias.length; i++) {
    if (p1[criterias[i]] !== p2[criterias[i]])
      return false;
  }

  return true;
}

console.log(areTheyTheSame(person1, person2));

第一个答案: 我想说最好的方法就是:

function areTheyTheSame(p1, p2) {
  if (p1.email !== p2.email)
    return false;
  if (p1.firstName !== p2.firstName)
    return false;
  if (p1.lastName !== p2.lastName)
    return false;

  return true;
}
console.log(areTheyTheSame(person1, person2));

目的是在功能早期返回。一旦我们知道他们不是同一个人(并且电子邮件可能是最简单的知道方式),我们就可以从该功能返回。

答案 1 :(得分:0)

  1. 你在几个地方有拼写错误 - 应该是“人”而不是“peson”

  2. 如果你向函数传递2个“人”参数,你不应该在函数中创建新的本地“人”变量 - 因为它们具有相同的名称,它们将覆盖/冲突传入的内容。在您当前的代码中,您没有比较传入的两件事,您只是将person2与您在函数内定义的本地版person1进行比较。

  3. 您还有2个return语句。第一个导致函数停止在原来的位置,因此您尝试显示到#output的行甚至不会被击中。

  4. 您不能将return放在html()函数中。它需要是HTML或字符串。

  5. 原来的问题: 在JavaScript中,您可以使用点表示法或括号访问对象属性。 您还可以使用“===”直接比较字符串(与某些语言不同)。这应该适用于您的情况,因为您比较的所有内容似乎都是字符串。

    因此,如果您想比较firstName,lastName和email,一个选项是将这3个条件合并到一个if语句中......

    if (person1.email === person2.email && person1.lastName === person2.lastName && person1.firstName === person2.firstName) {
     //Success!
    }
    else {
    //Fail! 
    }
    

    这将失败并在任何一个条件首先失败时返回,所以如果你以降低的匹配机会命令它们,你会很快发现是否有匹配。但是,这是一个相当长的&amp;复杂的条件陈述。打破它们会更清洁,更易于管理。

    或者,特别是如果你想在未来添加或比较更多属性...请参阅Cohars回答我将要编写的其他方法,但现在不需要:)