![](/img/trans.png)
[英]JavaScript: How do I pass a string argument to a function to use to sort an array of objects by the value of that string argument?
[英]Use string as argument of a function (JavaScript)
我对 JavaScript 有一个普遍的问题。 我正在尝试通过单独的方法构造我的项目中函数中使用的长参数。 最后我能够生成一个带有必要参数的字符串,但是我不能将它作为参数插入到方法中。 当我这样做时,我从我使用的 API 中得到不同的错误。 问题是,方法中有几个参数,当我插入生成所述参数的方法时,该方法仅将这些参数视为长字符串。 我试过使用 eval() 和 String() 方法,但没有成功。
我知道那些生成的参数是正确的,因为当我使用控制台并一步一步地做所有事情时,我可以生成这些参数,然后在方法中手动复制它们,这是有效的。
谁能告诉我如何强制浏览器将插入的字符串视为“已在方法中编写的代码”?
感谢并抱歉没有包含代码,我还不能向任何人展示它。
编辑:代码看起来类似于:
function buildArguments(args) {
var title='Something';
var interval=1;
var type='Something';
var build = '{title: {text: "' + title + '"},' +
'axis: { interval: ' + interval + '}, ' +
'dataType: { type: "' + type '"}};'
return build;}
function graph(args) {
var graph = new MyGraphAPI.Create(buildArguments(args));
graph.chart();}
它应该创建这样的东西:
var graph = new MyGraphAPI.Create(
{
title: {text: "Something"},
axis: {interval: 1},
dataType: {type: "Something"};
}
);
可能有一些错误,我匆忙编写的代码只是作为一个例子。 但是,您应该明白这一点。
Edit2:我还应该补充一点,build 函数中的这些参数用于在 final 方法中创建最终的参数字符串(即使我没有在示例中包含它)。
您需要将字符串转换为对象。 就像是:
callfunc(eval("{a:1,b:2}"));//equals callfunc({a:1,b:2})
如果要传递多个参数,并将它们放入一个数组中,则可以执行以下操作:
callfunc(...["arg1","arg2"]); //equals callfunc("arg1","arg2");
两者一起:
callfunc(...eval("['arg1',{someobjval:1,someabjvaltwo:2}]"));
然而,这是不好的风格。 为什么需要字符串? 你不能只构建一个对象/数组吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.