Javascript 在遍历已解析的JSON时未定义

Javascript 在遍历已解析的JSON时未定义,javascript,Javascript,我有一个函数,用于检查新用户的名字、姓氏和电子邮件是否与node.js mock database JSON文件中的相同。它失败是因为电子邮件在第一次迭代后未定义。i、 e.如果我添加了一个具有重复电子邮件的用户,它将失败,因为在第一次迭代后,比较db_email===email永远不会为真 发生了什么事?我是不是错过了一些显而易见的东西 db.json api.js } console.log输出 提前感谢您的帮助 这是预期的javascript行为:未设置引用时返回undefined 您的J

我有一个函数,用于检查新用户的名字、姓氏和电子邮件是否与node.js mock database JSON文件中的相同。它失败是因为电子邮件在第一次迭代后未定义。i、 e.如果我添加了一个具有重复电子邮件的用户,它将失败,因为在第一次迭代后,比较db_email===email永远不会为真

发生了什么事?我是不是错过了一些显而易见的东西

db.json

api.js

}

console.log输出


提前感谢您的帮助

这是预期的javascript行为:未设置引用时返回undefined

您的JSON数组不一定为每个对象都有“email_address”字段,因此“undefined”是值占位符,因为找不到它

没有电子邮件地址的用户对象[地址]示例:


地址:{street_no_and_name:23,城市:Rowena Drive,国家:Timbucktoo,邮政编码:M5H3P5}

这是预期的javascript行为:未设置引用时返回未定义

您的JSON数组不一定为每个对象都有“email_address”字段,因此“undefined”是值占位符,因为找不到它

没有电子邮件地址的用户对象[地址]示例:


地址:{街道编号和名称:23,城市:罗韦纳大道,国家:廷巴克图,邮政编码:M5H3P5}

找到了;也觉得挺傻的


我将“email_address”放在JSON中的“address”下,它应该放在“basic_info”下。还应该通过const db_email=userInfo[基本信息][电子邮件地址]访问它;在api.js中

找到了它;也觉得挺傻的

我将“email_address”放在JSON中的“address”下,它应该放在“basic_info”下。还应该通过const db_email=userInfo[基本信息][电子邮件地址]访问它;在api.js中

看起来电子邮件地址实际上嵌套在除第一个用户之外的所有用户的基本信息下


看起来除了第一个用户之外,所有用户的电子邮件地址实际上都嵌套在基本信息下。

您的JSON有点不正确,第一条记录的电子邮件地址嵌套在地址中,其他三条记录的电子邮件地址都嵌套在基本信息中。您的JSON有点不正确,第一条记录的电子邮件地址嵌套在地址中,其他3个都有基本信息
[{"basic_info":{"first_name":"Diego","last_name":"Gonzalez","phone_number":"451-124-5112","postal_code":"G1F 1F5"},"address":{"email_address":"dgonz@gmail.com","street_no_and_name":"45 Kirklane Drive","city":"Rome","country":"Italy"},"banking_info":{"occupation":"accountant","annual_salary":45000,"monthly_expenses":2000},"products":{"chequing":true,"savings":true,"line_of_credit":false,"mortgage":true,"credit_card":true},"user_id":1},{"basic_info":{"first_name":"Marie","last_name":"Spitzer","phone_number":"640-998-3252","email_address":"mspitzer@gmail.com"},"address":{"street_no_and_name":"425 Godstone Lane","city":"Mexico City","country":"Mexico","postal_code":"Q1P 0F1"},"banking_info":{"occupation":"firefighter","annual_salary":95000,"monthly_expenses":5000},"products":{"chequing":false,"savings":false,"line_of_credit":false,"mortgage":false,"credit_card":true},"user_id":2},{"basic_info":{"first_name":"Jacob","last_name":"Karr","phone_number":"437-990-2275","email_address":"jacob.carr@carr.com"},"address":{"street_no_and_name":"23","city":"Rowena Drive","country":"Timbucktoo","postal_code":"M5H3P5"},"banking_info":{"occupation":"Consultant","annual_salary":"900001","monthly_expenses":"2440"},"products":{"Chequing":false,"Savings":false,"Line of Credit":false,"Mortage":false,"Credit Card":true},"user_id":3},{"basic_info":{"first_name":"Jacob","last_name":"Karr","phone_number":"437-990-2275","email_address":"jacob.carr@carr.com"},"address":{"street_no_and_name":"23","city":"Rowena Drive","country":"Timbucktoo","postal_code":"M5H3P5"},"banking_info":{"occupation":"Consultant","annual_salary":"900001","monthly_expenses":"2440"},"products":{"Chequing":false,"Savings":false,"Line of Credit":false,"Mortage":false,"Credit Card":true},"user_id":4}]
const validateRegistration = (fn, ln, email) => {
const reg = fs.readFileSync('db/registration.json', 'utf8');
const regObject = JSON.parse(reg);

const existingUsers = regObject.filter(userInfo => {
    const db_fn = userInfo["basic_info"]["first_name"];
    const db_ln = userInfo["basic_info"]["last_name"];
    const db_email = userInfo["address"]["email_address"];

    console.log(`${db_fn} === ${fn} = ${db_fn === fn}`);
    console.log(`${db_ln} === ${ln} = ${db_ln === ln}`);
    console.log(`${db_email} === ${email} = ${db_email === email}`);

    if (db_fn === fn && db_ln === ln && db_email === email) { return true; }
})

return existingUsers.length > 0 ? true : false;
Diego === Jacob = false
Gonzalez === Karr = false
dgonz@gmail.com === jacob.carr@carr.com = false
Marie === Jacob = false
Spitzer === Karr = false
undefined === jacob.carr@carr.com = false
Jacob === Jacob = true
Karr === Karr = true
undefined === jacob.carr@carr.com = false
  {
    "basic_info": {
      "first_name": "Jacob",
      "last_name": "Karr",
      "phone_number": "437-990-2275",
      "email_address": "jacob.carr@carr.com"
    },
    "address": {
      "street_no_and_name": "23",
      "city": "Rowena Drive",
      "country": "Timbucktoo",
      "postal_code": "M5H3P5"
    },
    ...
    "user_id": 4
  }