JavaScript 带有函数参数的动态命名
JavaScript Dynamic naming with argument of function.
我一直在寻找答案,但徒劳无功。
我有一个函数,它将表名作为参数。 但此名称可以是对象。
loadDataFromServer = function(dataTable) {
//data fetch code ...
datadump[dataTable] = response.getDataTable();
}
loadDataFromServer(['gchart']['data'])
问题是我需要将数据存储在变量datadump.gchart.data中,但是"gchart.data"部分需要在调用函数时确定,而不是在其中进行硬编码。我的问题是 datadump[['gchart']['data']]
与 datadump['gchart']['data']
(与datadump.gchart.data
相同)
这里有人知道这样做的好方法吗?如果输入只是gchart_data,这将很容易工作,但函数需要能够处理它,即使它需要将其数据分配给blabla.blibli.bloebloe.stuff
。
提前致谢
我认为
您要查找的是:
function (result) {
datadump = {};
datadump.gchart = {};
datadump.gchart.data = result.gchart.data;
// or
datadump.gchart = {
data: result.gchart.data
};
}
不过,这样有点奇怪。你绝对需要datadump
中的gchart
吗?
分配给像blabla.blibli.bloebloe.stuff
这样的随机深度并不容易。
您可以像这样扁平化:obj["blabla.blibli.bloebloe.stuff"] = {};
或者你可以写一个递归合并,比如:
var a, b, c;
a = { foo: { ipsum: "lorem" } };
b = { bar: {}, foo: { abc: "def" } };
c = recursive_merge(a, b); // { foo: { ipsum: "lorem", abc: "def" }, bar: {} };
让你函数获取字符串列表并迭代它们以递归访问(并在必要时创建)datadump
的属性。我在这里使用 arguments
来使用参数列表本身,但您也可以只使用作为字符串数组的单个参数。
var loadDataFromServer = function() {
var currObj = datadump;
// iterate over the list of property names
for(var i=0; i<arguments.length - 1; ++i) {
var nextName = arguments[i];
// if the object doesn't have this property, make it
if(currObj[nextName] == undefined) {
currObj[nextName] = {};
}
// use currObj's property as the new `currObj`
currObj = currObj[nextName];
}
// load data into the final named property
currObj[arguments[i]] = response.getDataTable();
}
loadDataFromServer('gchart', 'data');
相关文章:
- Facebook共享动态参数链接
- 在 angularjs 的 ga 命令中设置动态参数
- JavaScript动态参数
- 在JQGridshowlink格式化程序中添加了动态参数
- 如何使用 javascript 在 HTML 电子邮件中显示动态参数
- 使用动态参数调用函数
- 使用 innerHTML 将动态参数传递给 JavaScript 函数
- Angularjs:隐藏包含动态参数的网址的导航栏
- 解绑,然后将 OnClick 函数(带有动态参数)绑定到 jQuery 或 JavaScript 中继器中的锚标记
- 使用和返回动态参数是否安全
- 创建具有动态参数排列的方法/函数
- 将动态参数应用于 JavaScript 函数,但延迟调用
- ejs :添加动态参数
- 支柱 2 使动态参数
- 具有动态参数长度的函数
- 使用动态参数设置onclick属性
- URL中包含动态参数的快速路由
- 将动态参数传递给IIFE
- Javascript中的动态参数
- Datatables-使用具有多个表和动态参数的Ajax数据源(sAjaxSource)