2013-10-30 41 views
1

我稍微新的JavaScript所以需要你們的Javascript FN可以接受單個URL或多個URL

我想要實現,可以採取的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]); 
     } 
    } 
} 
+1

這是從複製錯誤還是實際上錯誤的代碼? 'this.myArray.indexOf(urlArray [i]'(missing the end')') –

+0

[typeof()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) – Andreas

+0

@ Qantas94Heavy Ups,你的權利。我的一個錯誤,但我不再允許改變它... – Andreas

回答

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']); 
+0

謝謝..作品.. – visibleinvisibly

0

Working example

可以使用的事實,一個物體具有獨特的條目(屬性)名稱:

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.. 
     } 

    } 
0

我會建議你使用arguments對象這是可用的內部JavaScript函數。 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()