1

我对javascript有点陌生,所以需要你们的帮助

我想实现一个可以将 URl 数组作为参数的 Javascript 函数。并将它们存储在一个数组中,该数组是该类的成员。如何知道数组是否有单个 URl 或多个 url 的问题因为 url 本身是一个字符串。我不想存储重复的 URL

function storeUrl(urlArray) {
    var i = 0;
    var url;
    this.myArray = new Array();
    for (i = 0; i < urlArray.length; i++) {
        // check whether the URL already exists
        if (this.myArray.indexOf(urlArray[i] == -1) {
            this.myArray.push(urlArray[i]);
        }
    }
}
4

3 回答 3

0

工作示例

您可以使用对象具有唯一条目(属性)名称的事实:

var g = {};
function storeUrl(urlArray)
  {
      if (!Array.isArray(urlArray)) urlArray=[urlArray]; //now you can pass single url also

      for (var i = 0; i < urlArray.length; i++)
      {
          if (!g.hasOwnProperty(urlArray[i]))

              {
                  g[urlArray[i]] = urlArray[i];
              }

          //... do whatever with g..
      }

  }
于 2013-10-30T11:46:47.803 回答
0

我建议您使用 javascript 函数中可用的 arguments 对象。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments

所以不要传递 [] 字符串,只需传递字符串
并执行类似的操作

function(){
 var args = Array.prototype.slice.call(arguments);
 for(i=0;i<args.length;i++)
 {
   //access args
 }
}

那么你可以在任何你想传递任意数量的参数的地方调用该方法。这可以在javascript中使用.apply()

于 2013-10-30T11:47:06.187 回答
0

在不重复代码的情况下处理此问题的常用方法是将 urlArray 转换为具有单个元素的数组(如果它还不是一个元素)。

function storeUrl(urlArray) {
    urlArray = (urlArray instanceof Array) ? urlArray : [urlArray]; // <- magic
    // urlArray is an Array at this point
    var i = 0;
    var url;
    this.myArray = new Array();
    for (i = 0; i < urlArray.length; i++) {
        // check whether the URL already exists
        if (this.myArray.indexOf(urlArray[i] == -1) {
            this.myArray.push(urlArray[i]);
        }
    }
}

// Usage:
storeUrl('myurl');
storeUrl(['url1', 'url2']);
于 2013-10-30T11:47:59.087 回答