gpt4 book ai didi

javascript - 在将函数转换为字符串之前评估函数中的变量

转载 作者:行者123 更新时间:2023-12-02 13:56:34 25 4
gpt4 key购买 nike

我正在使用 pouchDb 并查询数据库,它需要创建 map 函数(这是 couchDB 的标准做法)

此版本正在运行:

function (doc) {
if (doc.type) {
emit(doc.type)
}
}.toString()

其结果是:

"function mapFunction(doc) {
if (doc.type) {
emit(doc.type);
}
}"

但是,我正在尝试将我的函数调用更改为更加动态,以便我可以通过该字段传递应该构建 map 函数的字段。考虑到这一点,我有一个名为 field 的变量,并将我的 map 函数更改为:

var field = '_id'
function (doc) {
if (doc[field]) {
emit(doc[field)
}
}.toString()

问题是,生成的字符串是这样的:

"function mapFunction(doc) {
if (doc[field]) {
emit(doc[field]);
}
}"

但我需要它是:

"function mapFunction(doc) {
if (doc['_id']) { //or doc._id (I don't mind)
emit(doc['_id']);
}
}"

有可能实现这个目标吗?

编辑:最糟糕的情况是,我将其写为字符串并这样做,但更愿意将其作为可读函数。

最佳答案

也许一个生成器可以接受一个函数、一个变量名和一个值并创建您想要的字符串。

类似

function functionGenerator(func, variable, value){
var r = new RegExp(variable,'gi');
return func.toString().replace(r, value);
}

function mapFunction(doc) {
if (doc[field]) {
emit(doc[field]);
}
}

var map = functionGenerator(mapFunction, 'field','\'_id\'');

console.log(map);

关于javascript - 在将函数转换为字符串之前评估函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40663453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com