Javascript 检查JSON对象中是否存在值
我正在学习NodeJS。我使用一个JSON对象来检查用户是否存在 这是我的JSON users.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"
{
"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"
}
}