2013-03-25 67 views
-1

如何確保兩個逗號沒有輸入到一個數組中..這是一個從用戶輸入生成數組的Web應用程序,它是一個文本字段..我無法將其更改爲其他任何內容。我該如何處理Javascript中的這種錯誤?

例子.. var names=["Kim",,"Andrew","Ashley"];

這個數組中

,我們有兩個連續的逗號,而不是一個..我怎麼能保證的是,如果用戶輸入這不會是好任何角色,我只是把它如逗號,點等..對於額外的逗號的例子,考慮到我沒有其他選擇,但處理文本字段生成像這樣的數組,這將如何實現

+5

以何種方式被這個_not_的副本(http://stackoverflow.com/q/15621232/139010) – 2013-03-25 23:37:47

+0

有人問我實際操作[你剛纔我回答的問題嗎?]它自己在代碼中.. – Rogers 2013-03-25 23:38:57

+0

額外的逗號可以在[下面的答案](http://stackoverflow.com/a/15626836/139010)中處理。你需要處理哪些其他類型的「無效」輸入,以及如何處理? – 2013-03-25 23:41:13

回答

1

通過運行數組一個函數(見下文)刪除數組中的無效值。在你的情況下,對於["Kim",,"Andrew","Ashley"]中的第二個元素,值是undefined

var stripEmpty = function (ary) { 
    var result = []; 
    for (var i = 0; i < ary.length; i++) { 
     if (ary[i] !== undefined) { 
      result.push(ary[i]); 
     } 
    } 
    return result; 
}; 

然後,你可以這樣做:

var names = ["Kim",,"Andrew","Ashley"]; 
var strippedNames = stripEmpty(names); // ["Kim","Andrew","Ashley"] 

見工作小提琴:http://jsfiddle.net/amyamy86/LymAZ/

0

兩個連續的逗號(或領先的逗號)是elision,它增加了一個成員的索引。被忽略的成員不存在作爲數組的屬性。爲了找到這樣的成員,您可以使用in操作:

var a = [,0,1,, , ,2,3,, ,]; 

var i = a.length; 

while (i--) { 

    if (!(i in a)) { // returns true if a has no index i 
    a.splice(i, 1); 
    } 
} 

alert(a); // 0,1,2,3 

這也與數組文本中多餘的空格交易。

0

這不是每個說的錯誤,只是你的表單中有空項被添加到你的數組中。試試這個:

//assume your array has been filled up 

var mod_names = names.join("#"); // you can use any delimeter apart from '#' 

if(mode_names.indexOf(" ") > -1){ 
    mode_names.replace(/\s+/gi, ""); 
} 
mode_names.replace(/#/gi, " "); 
mod_names = mod_names.split(); // the default is a space char 
names = mode_names; 
相關問題