我在尝试使用帮助函数来利用Google Analytics API,并且我有一个构建字符串的简单问题。场景是,我必须应用一个过滤器,并且可能有n个过滤器(标称量,不超过128)。我想写一个函数,它可以接收n个字符串并将它们与逗号分隔结合起来。如何将数组作为参数传递给JavaScript中的函数?
我不知道参数的数量是否可以在javascript中变量,以及它是否可以将数组作为参数在JavaScript中(我是JS的新手),但我没有看到任何区别,因为变量只是var
和在JS的任何地方都没有数据类型(我来自C++/Java背景,发现它很混乱)。所以我试着将一个数组作为参数传递给一个函数,我可以使用的东西可以是动态的,由数组中的元素决定。
当我开始寻找解决方案时,我碰到this page。在那之后,我最近遇到了this thread,它也提到了同样的链接,他们提供的格式对我来说并不好。
为了清楚起见,让我提供我写的函数定义。
/**
* Utility method to build a comma-ed string from an array of strings
* for the multiple-condition requests to the GA API
*/
function buildString(strArray)
{
var returnString='';
for(var x in strArray)
returnString+=x+',';
return returnString = returnString.substring(0, returnString.length - 1);
}
这是我怎么称呼它:
buildString.apply(this,[desc(visits),source])
其中desc(visits)
和source
都是字符串,所以我假设我送一个字符串数组。奇怪的是,this
和null
在apply()
调用buildString函数给我“0,1”作为返回值。
请告诉我我哪里出错了。我是否以错误的方式传递数组?或者我的函数定义错了?还是有其他更简单的方法来实现我正在尝试的?
对于变量参数检查http://stackoverflow.com/questions/2141520/javascript-variable-number-of-arguments-to-function/2141530#2141530,你可以传递一个数组o r任何类型的对象作为JS中的参数。 –
如果您想将数组转换为逗号分隔的字符串,请使用'array.join(',')'。 – Barmar
你使用你的函数的方式就是'buildString(someArray)'。 – Barmar