javascript - 创建 JavaScript map

标签 javascript node.js

我大约 5-6 个月前开始学习 JS,尤其是 Node.js,我经常使用 Discord.js 库,并且了解其他编程语言。

我想使用 Map() 创建一种数据存储,在我只创建对象数组之前,Discord.js 使用了一堆 map ,使用它们很愉快。

我的新目标是使用 Electron 创建一个小应用程序,我需要在 map 中保存用户和程序列表,为了持久化,我想将它们保存为 JSON,如果可能的话,这里是我预先创建的一些示例数据JSON 用户文件:

"user": [
    {
        "name": "David",
        "currentProgram": "program1",
        "currentPhase": "C",
        "workout": [
            {
                "name": "Workoutname",
                "load": "10", 
                "units": "kg"
            }
        ]
    },
    {
        "name": "Markus",
        "currentProgram": "program2",
        "currentPhase": "A",
        "workout": []
    }
]

程序文件:

"program": [
    {
        "name": "program1",
        "phases": [
            {
                "name": "A",
                "cycles": [
                    {
                        "name": "day 1",
                        "exercises": [
                            {
                                "name": "workout1",
                                "set": 4,
                                "repetitions": 8
                            },
                            {
                                "name": "workout2",
                                "set": 4,
                                "repetitions": 8
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

我的目标是做这样的事情:

var user = require('./user.json');

user.get("David").currentProgram = "program2";
user.get("David").currentPhase = "A";

var phase = program.get("program1").phases.get("A")

console.log(user.get("David"));

我不会使用 JSON 文件中所示的数组,而是创建一个 Map()

我正在寻找一些信息,了解如何在我的情况下以最佳方式创建 map 。如果有人有很好的学习 js 方法,特别是 Map() 我将不胜感激。我发现的唯一东西是 array.map 或谷歌地图,但它与 Map() 不同。

另一个目标是将代码分离到不同的文件中,以便我有一个单独的文件来构建每个 map 。

非常感谢!

最佳答案

创建 map 的小 helper :

 function toMap(array, prop){
   const map = new Map();
   for(const el of array) map.set(el[prop], el);
   return map;
}

可以像这样使用:

 const users = JSON.parse(require("fs").readFileSync('./user.json')).user;
 users.byId = toMap(users, "name");

 console.log( users.byId.get("jonas"));

关于javascript - 创建 JavaScript map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47778935/

相关文章:

javascript - Chrome.Runtime.SendMessage 不工作

javascript - jquery 每次循环dom操作(JSON)

javascript - 除非在设置之前查询 DOM 样式属性,否则将忽略过渡时间

node.js - 套接字流对话的 Node.js 范例是什么?

javascript - 在 Express.js 应用程序中提供客户端 JavaScript

javascript - 当您不知道页数时,如何使用 Node.js 在 while 循环中向 API 发出多个分页 GET 请求?

javascript - 为什么我的按钮在我点击它时不执行该功能。它应该切换文本

javascript - Highcharts Z-Index 实践不起作用

security - 使用 Node.js 的 Kerberos 身份验证

javascript - MariaDB 与 Sequelize 的连接