我绝不是流利的 JS,所以如果我要求一些非常基本的东西,请原谅我,但我无法找到我的问题的正确答案。
我正在编写我的第一个 Node.js(加上 Extra Framework 和 Socket.io)应用程序,并且我在设置类似 FB 的 Messenger 的服务器端时获得了一些乐趣(惊喜!!!)。
所以,假设我有这个数据结构来存储在线用户(这是一个 JSON 数组,但我不确定这是最好的方法还是应该使用 Javascript 对象):
[
{
"site": 45,
"users": [
{
"idUser": 5,
"idSocket": "qwe87r7w8qwe",
"name": "Carlos Ray Norris"
},
{
"idUser": 6,
"idSocket": "v8d9d0fgfs7d",
"name": "John Connor"
}
]
},
{
"site": 48,
"users": [
{
"idUser": 22,
"idSocket": "qwe87r7w8qwe",
"name": "David Bowie"
},
{
"idUser": 23,
"idSocket": "v8d9d0fgfs7d",
"name": "Barack H. Obama"
}
]
}
]
我想要做的是在数组中搜索给定 y 的 x 值。在这种情况下,检索 idSocket 知道 idUser而不必遍历数组值。
所以我基本上有两个问题:首先,在线存储用户的正确方法是什么?其次,如何找到与我已经知道的值匹配的值(找到具有给定 idUser 的 idSocket)。
我想要一个纯 JS 方法(或使用 Node、Socket.io 或 Express 提供的一些工具),但如果这不可能,那么我可以寻找一些 JQuery。
编辑 我接受了 chovy 的建议并对结构进行了一些修改,现在看起来像这样
{
45: { // site
05: { // userId
"name": "Carlos Ray Norris",
"socketID": "qwe87r7w8qwe"
},
06: {
"name": "John Connor",
"socketID": "v8d9d0fgfs7d"
}
},
48: {
22: {
"name": "David Bowie",
"socketID": "erv7e6v876vr"
},
23: {
"name": "Barack H. Obama",
"socketID": "brt877brtt87"
}
}
}
感谢 Node.js,我可以轻松访问这样的数据(我知道站点和 userId 值)var socket = data[site]["05"].socketId
。我猜这要归功于 Node.js,但我不完全确定。