[英]How to reference the key from json with node.js
我如何访问以下json数据
"users":{
"2211392761":{"username":"user1"},
"14300995184":{"username":"user2"},
"2781554712":{"username":"user3"},
"3554341":{"username":"user4"},
"202611":{"username":"user5"},
"17754300653761":{"username":"user6"}
}
到目前为止我有这个,我知道这是完全错误的:
Object.keys(jsonevents["events"]).forEach(function(key) {
if(eventName == jsonevents["events"][key]["name"]){
if(jsonevents["events"][key]["users"]){
if(jsonevents['events'][key]["users"][message.author.id]){
delete jsonevents['events'][key]["users"][message.author.id];
fs.writeFile(eventsjson, JSON.stringify(jsonevents),'utf8');
sayMessage += "```User is no longer part of the event "+jsonevents['events'][key]["name"]+"```";
} else {
sayMessage += "```user is not in the event "+jsonevents['events'][key]["name"]+"```";
}
} else {
sayMessage += "```Why do we have no users```";
}
} else {
//sayMessage += "```No event found```";
}
});
我需要通过传递用户名来访问密钥,因此user2
会给我14300995184
因此我可以使用它来从事件中删除用户。
您可以使用find()
搜索Object.entries
并返回正确的对象。 它将返回一个key/value
数组,键将是您所追求的:
let users = { "2211392761":{"username":"user1"}, "14300995184":{"username":"user2"}, "2781554712":{"username":"user3"}, "3554341":{"username":"user4"}, "202611":{"username":"user5"}, "17754300653761":{"username":"user6"} } let found = Object.entries(users).find(([key, value]) => value.username === "user2") console.log(found && found[0]) // found is undefined if not found
您可以迭代users
对象的entries
(键值对),并使用.find
查找与您要查找的用户名匹配的用户名。 条目中的第一项(密钥)将是您要查找的内容:
const obj = { "users": { "2211392761": { "username": "user1" }, "14300995184": { "username": "user2" }, "2781554712": { "username": "user3" }, "3554341": { "username": "user4" }, "202611": { "username": "user5" }, "17754300653761": { "username": "user6" } } } const findEntry = usernameToFind => { const foundEntry = Object.entries(obj.users) .find(([, { username }]) => username === usernameToFind); if (foundEntry) return foundEntry[0]; }; console.log(findEntry('user5')); console.log(findEntry('userthatdoesntexist'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.