如何確保兩個逗號沒有輸入到一個數組中..這是一個從用戶輸入生成數組的Web應用程序,它是一個文本字段..我無法將其更改爲其他任何內容。我該如何處理Javascript中的這種錯誤?
例子.. var names=["Kim",,"Andrew","Ashley"];
,我們有兩個連續的逗號,而不是一個..我怎麼能保證的是,如果用戶輸入這不會是好任何角色,我只是把它如逗號,點等..對於額外的逗號的例子,考慮到我沒有其他選擇,但處理文本字段生成像這樣的數組,這將如何實現
如何確保兩個逗號沒有輸入到一個數組中..這是一個從用戶輸入生成數組的Web應用程序,它是一個文本字段..我無法將其更改爲其他任何內容。我該如何處理Javascript中的這種錯誤?
例子.. var names=["Kim",,"Andrew","Ashley"];
,我們有兩個連續的逗號,而不是一個..我怎麼能保證的是,如果用戶輸入這不會是好任何角色,我只是把它如逗號,點等..對於額外的逗號的例子,考慮到我沒有其他選擇,但處理文本字段生成像這樣的數組,這將如何實現
通過運行數組一個函數(見下文)刪除數組中的無效值。在你的情況下,對於["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"]
兩個連續的逗號(或領先的逗號)是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
這也與數組文本中多餘的空格交易。
這不是每個說的錯誤,只是你的表單中有空項被添加到你的數組中。試試這個:
//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;
以何種方式被這個_not_的副本(http://stackoverflow.com/q/15621232/139010) – 2013-03-25 23:37:47
有人問我實際操作[你剛纔我回答的問題嗎?]它自己在代碼中.. – Rogers 2013-03-25 23:38:57
額外的逗號可以在[下面的答案](http://stackoverflow.com/a/15626836/139010)中處理。你需要處理哪些其他類型的「無效」輸入,以及如何處理? – 2013-03-25 23:41:13