gpt4 book ai didi

javascript - NodeJs Javascript 从数组动态调用函数

转载 作者:行者123 更新时间:2023-11-30 20:20:48 25 4
gpt4 key购买 nike

所以我搜索了堆栈溢出,但似乎无法找到人们建议的任何有效方法。

所以我有一个对象数组

Report_Search_List = [
{"NAME":"CHART OF ACCOUNTS", "PDF":"CHART_OF_ACCOUNTS_PDF", "XLS":"CHART_OF_ACCOUNTS_XLS"},
{"NAME":"GENERAL LEDGER", "PDF":"GENERAL_LEDGER_PDF", "XLS":"GENERAL_LEDGER_XLS"},
{"NAME":"COST REPORT", "PDF":"COST_REPORT_PDF", "XLS":"COST_REPORT_XLS"},
{"NAME":"CASH FLOW", "PDF":"CASH_FLOW_PDF", "XLS":"CASH_FLOW_XLS"},
{"NAME":"INVOICE", "PDF":"INVOICE_PDF", "XLS":"INVOICE_XLS"},
{"NAME":"CREDIT NOTE", "PDF":"CREDIT_NOTE_PDF", "XLS":"CREDIT_NOTE_XLS"},
{"NAME":"JOBCARD COST", "PDF":"JOBCARD_COST_PDF", "XLS":"JOBCARD_COST_XLS"},
{"NAME":"GOODS RECEIVED VOUCHER", "PDF":"GOODS_RECEIVED_VOUCHER_PDF", "XLS":"GOODS RECEIVED VOUCHER_XLS"},
{"NAME":"GOODS RETURNED NOTE", "PDF":"GOODS_RETURNED_NOTE_PDF", "XLS":"GOODS_RETURNED_NOTE_XLS"},
{"NAME":"REQUISITION", "PDF":"REQUISITION_PDF", "XLS":"REQUISITION_XLS"},
{"NAME":"DELIVERY NOTE", "PDF":"DELIVERY_NOTE_PDF", "XLS":"DELIVERY_NOTE_XLS"},
{"NAME":"PICK SLIP", "PDF":"PICK_SLIP_PDF", "XLS":"PICK_SLIP_XLS"},
{"NAME":"PETTY CASH", "PDF":"PETTY_CASH_PDF", "XLS":"DELIVERY_NOTE_XLS"},
{"NAME":"OTHER TRANSACTIONS", "PDF":"OTHER_TRANSACTIONS_PDF", "XLS":"OTHER_TRANSACTIONS_XLS"},
{"NAME":"PURCHASE ORDER", "PDF":"PURCHASE_ORDER_PDF", "XLS":"PURCHASE_ORDER_XLS"}
]

因此它首先构建一个搜索列表供用户从中进行选择

Report_Search_List[index].NAME

然后一旦他们选择了报告,他们就会点击 PDF 或 XLS 按钮

这是函数

function PDF_CLICK() {
try {
var text = "none";
var BRANCH_PDF_REPORTS_PROFILE_SELECT = document.getElementById('BRANCH_PDF_REPORTS_PROFILE_SELECT');
text = BRANCH_PDF_REPORTS_PROFILE_SELECT.value;
//get array list
var report = Report_Search_List.filter(function (el) {
return el["NAME"] == text;
});
//PROBLEM IS HERE
//run method
Window[report[0]["PDF"]]();
window[report[0]["PDF"]]();
report[0]["PDF"].call();
report[0]["PDF"]();
} catch (e) {
console.log(e);
EX_JS_ALERT.ALERT("OOPS SOMETHING WENT WRONG"); EX_JS_ERROR.ERROR(e.toString(), location.pathname);;
}
}

现在的问题

我已经尝试了以上所有方法,它得到了正确的报告,但仍然返回它不是一个函数。同时下面还有一个函数。

最佳答案

这被标记为 node.js 所以我假设它没有在浏览器中运行。因此,没有 window 对象可用于查找全局变量。您可以在 Node 中的 global 对象上显式定义内容,但这很少是个好主意。更好的方法是创建一个对象,该对象使用键来保存您的函数,这些键以您要用来调用它们的文本命名。

因此对于您的数据子集,您可能会有如下安排:

const Report_Search_List = [
{"NAME":"CHART OF ACCOUNTS", "PDF":"CHART_OF_ACCOUNTS_PDF", "XLS":"CHART_OF_ACCOUNTS_XLS"},
{"NAME":"GENERAL LEDGER", "PDF":"GENERAL_LEDGER_PDF", "XLS":"GENERAL_LEDGER_XLS"}
]

const functions = {
CHART_OF_ACCOUNTS_PDF(){console.log("chart called")},
GENERAL_LEDGER_PDF(){console.log("Ledger call")}

}

// now you can call them with strings:
functions[Report_Search_List[0]["PDF"]]()
functions[Report_Search_List[1]["PDF"]]()

关于javascript - NodeJs Javascript 从数组动态调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51474270/

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