Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 检查JSON对象中是否存在值_Javascript_Json_Node.js - Fatal编程技术网

Javascript 检查JSON对象中是否存在值

Javascript 检查JSON对象中是否存在值,javascript,json,node.js,Javascript,Json,Node.js,我正在学习NodeJS。我使用一个JSON对象来检查用户是否存在 这是我的JSON users.JSON: { "users": [{ "fname": "Robert", "lname": "Downey Jr.", "password": "ironman" }, { "fname": "Chris", "lname": "Evans", "password": "cap"

我正在学习NodeJS。我使用一个JSON对象来检查用户是否存在

这是我的JSON users.JSON:

{
    "users": [{
        "fname": "Robert",
        "lname": "Downey Jr.",
        "password": "ironman"
    }, {
        "fname": "Chris",
        "lname": "Evans",
        "password": "cap"
    }, {
        "fname": "Chris",
        "lname": "Hemsworth",
        "password": "thor"
    }, {
        "fname": "Jeremy",
        "lname": "Renner",
        "password": "hawk"
    }]
}
现在我想传递一个条目的fname值,看看它是否存在于JSON对象中

这就是我正在做的:

var file = JSON.parse(fs.readFileSync('users.json', 'utf8'));
for (eachUser in file.users) {
            console.log(eachUser.fname);
        }
但是我没有得到fname值,只是没有定义。我不知道我做错了什么


还有一种方法可以在不迭代JSON对象的情况下找到该值是否存在?

您的迭代语句中有一个问题:

for (eachUser in file.users)
请随意使用中描述的foreach语句之一,例如:

干杯

问题在于每个用户都会被设置为数组中的每个索引,而不是该索引处的对象。如果你只记录每一次,你会看到

0
1
2
3
相反,首先拉出对象,然后获取其fname

这是一个例子

如果要在不遍历数组的情况下执行此查找,可以将数据重新塑造为以fname为键的对象,因此看起来像:

{
  "Robert": {
    "fname": "Robert",
    "lname": "Downey Jr.",
    "password": "ironman"
  },
  "Chris": {
    "fname": "Chris",
    "lname": "Evans",
    "password": "cap"
  },
  "Jeremy": {
    "fname": "Jeremy",
    "lname": "Renner",
    "password": "hawk"
  }
}

当然,您可能无法存储任何重复的名字,或者需要创建值数组。

或更短:if file!=null。我想检查JSON对象中是否存在诸如“Chris”、“Robert”之类的值。不检查文件是否为空。在这些文件存在之前,文件必须存在。然后你就可以嵌套在里面了。你能重新构造你的答案吗?我不明白这在这里适用。是的!这很有效。但这可以在没有循环的情况下完成。只是想看看还有没有其他的方法。
0
1
2
3
for (index in file.users) {
  console.log(file.users[index].fname)
}
{
  "Robert": {
    "fname": "Robert",
    "lname": "Downey Jr.",
    "password": "ironman"
  },
  "Chris": {
    "fname": "Chris",
    "lname": "Evans",
    "password": "cap"
  },
  "Jeremy": {
    "fname": "Jeremy",
    "lname": "Renner",
    "password": "hawk"
  }
}