Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个Javascript函数,可以告诉我两个人';的名字、姓氏和电子邮件是否相同_Javascript_Jquery_Html - Fatal编程技术网

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

一个Javascript函数,可以告诉我两个人';的名字、姓氏和电子邮件是否相同,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个Javascript函数,它可以接受任意两个人的对象,如果它们完全相同(例如,如果firstName、lastName和email值都匹配),则返回true;如果它们不相同,则返回false。这就是我到目前为止所得到的,但我还没有任何逻辑,因为我不确定是否会用if-else语句或其他语句来完成 <!DOCTYPE html> <html> <head> <title>Question 6</title> &

我想创建一个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>

问题6
变量person1={
名字:“迈克”,
姓:“史密斯”,
电子邮件:“msmith@yahoo.com"
};
变量person2={
名字:“约翰”,
姓:“史密斯”,
电子邮件:“jsmith@yahoo.com"
};
$(文档).ready(功能比较人员(人员1、人员2){
if(person1.firstName!==person2.firstName)
返回false;
if(person1.lastName!==person2.lastName)
返回false;
如果(person1.email!==person2.email)
返回false;
其他的
返回true;
});
$(“#输出”).html(值);
if(返回true)
字符串“True”;
else(返回false)
字符串“False”;
编辑:用一种更简短的方式(特别是如果您想比较更多内容),我们只需设置一个包含所有要比较的属性的数组,并循环使用它们:

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) {
  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) {
  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) {
  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));
其目的是在函数中尽早返回。一旦我们知道他们不是同一个人(电子邮件可能是最容易知道的方式),我们就可以从功能返回

  • 你在一些地方有拼写错误-应该是“person”而不是“peson”

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

  • 您还有2个
    return
    语句。第一个命令会导致函数停止,因此您试图显示到
    #output
    的行甚至不会被击中

  • 您不能像这样将
    return
    放入
    html()
    函数中。它需要是HTML或字符串

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

    因此,如果要比较firstName、lastName和email,一个选项是将这三个条件组合在一个
    if
    语句中

    if (person1.email === person2.email && person1.lastName === person2.lastName && person1.firstName === person2.firstName) {
     //Success!
    }
    else {
    //Fail! 
    }
    
    这将失败并在任何一个先失败的条件下返回,所以如果您以降低匹配概率的方式对它们进行排序,您将很快发现是否存在匹配。但是,这是一个相当长且复杂的条件语句。把它们拆散会更干净、更容易管理

    或者,特别是如果您希望在将来添加或比较更多属性。。。请参阅Cohars的答案,了解我将要编写的另一种方法,但现在不必:)

  • 你在一些地方有拼写错误-应该是“person”而不是“peson”

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

  • 您还有2个
    return
    语句。第一个命令会导致函数停止,因此您试图显示到
    #output
    的行甚至不会被击中

  • 您不能像这样将
    return
    放入
    html()
    函数中。它需要是HTML或字符串

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

    因此,如果要比较firstName、lastName和email,一个选项是将这三个条件组合在一个
    if
    语句中

    if (person1.email === person2.email && person1.lastName === person2.lastName && person1.firstName === person2.firstName) {
     //Success!
    }
    else {
    //Fail! 
    }
    
    这将失败并在任何一个先失败的条件下返回,所以如果您以降低匹配概率的方式对它们进行排序,您将很快发现是否存在匹配。但是,这是一个相当长且复杂的条件语句。把它们拆散会更干净、更容易管理

    或者,特别是如果您希望在将来添加或比较更多属性。。。我本来打算写的另一种方法见Cohars的答案,但现在