javascript - JavaScript如何基于数组调用函数的函数等?
问题描述
我真的不知道如何表达这个问题,这就是为什么我在谷歌上搜索它时遇到了一些麻烦,但我基本上正在尝试制作一个用于修改 mongoDB 数据的辅助函数,并且我有一个命令列表,这种格式:
var commands = {
"find": {
"names": {
"find":["query"],
"toArray":["callback"]
}
},
"sort": {
"names": {
"find":[],
"sort":["query"],
"toArray":["callback"]
}
},
"limit": {
"names": {
"find":[],
"limit":["number"],
"toArray":["callback"]
}
},
"deleteOne": {
"args":["query","callback"]
},
"findOne": {
"args":["query", "callback"]
},
"insertOne": {
"args":["query", "callback"]
},
"insertMany": {
"args":["array"]
},
"remove": {
"args":["query", "callback"]
},
"drop": {
"args":["callback"]
},
"updateOne": {
"args":["query", "newvalues", "callback"]
},
"aggregate": {
"args": ["query"],
"hasCB":"toArray"
},
"createCollection": {
"args":["string", "callback"]
}
};
然后是这些值的字典:想法是根据输入调用特定的 mongoDB 函数,例如
Based off of this, I am able to make an array that looks like this:
[["find",[]],["sort",[{"name":-1}]],["toArray",[/*some function reference*/]]],
基于此,我想致电:
something.find().sort({"name":-1}).toArray(callback);
如果我有这样的事情:
[["find",[{"name":"hi"}]],["toArray",[/一些函数参考/]]],
我应该能够产生以下结果:something.find({"name":"hi"}).toArray(cb);
都在同一个功能。
这不是一个 node.js 问题,更多的是一般的 JavaScript,它给出了一个格式为
[[functionName1,arrayOfArguments1],[functionName2,arrayOfArguments2],[functionName3,arrayOfArguments3]]
你怎么
functionName1(...arrayOfArguments1)[functionName2](...arrayOfArguments2)[functionName3](...arrayOfArguments3)
称呼
可以说是使用循环还是一个函数?我如何产生这个结果,而不是手动写出来?我目前正在使用开关/外壳这样做,但这并不理想:
switch(funcList.length) {
case 2:
console.log(col[funcList[0][0]](...funcList[0][1])[funcList[1][0]](...funcList[1][1]));
break;
case 3:
console.log(col[funcList[0][0]](...funcList[0][1])[funcList[1][0]](...funcList[1][1])[funcList[2][0]](...funcList[2][1]));
break;
}
解决方案
你只需用表名解析
var Jstr = JSON.parse(commands).find;
现在,Jstr 包含
"names": {
"find":["query"],
"toArray":["callback"]
}
与此相同,您可以解析并获取值。
推荐阅读
- python - 基于用户输入的基本 Python 函数选择系统
- oracle - Oracle SQL - ORA-04079: 无效的触发器插入
- java - 大量创建石英触发器
- r - 目标“sysdata”的配方失败 - 不允许负长度向量(编译 R-cran v4.0.0)
- rust - Rust:impl trait 不能在线程之间安全共享
- visual-studio-code - Coffeescript 的 VSCode 语法高亮显示似乎不完整
- python - 正则表达式根据特定字符串提取日期
- javascript - JSON解析decodedURI失败?
- arrays - 替换数组中的索引
- flutter - 在 LIGHT 和 DARK 主题之间切换 (flutter_neumorphic: ^2.0.0)