我大约 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/