繁体   English   中英

如何使用node.js从json引用键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM