如何确保没有在数组中输入两个逗号..这是针对从用户输入生成数组的 Web 应用程序,它是一个文本字段..我无法将其更改为其他任何内容。
例子 .. var names=["Kim",,"Andrew","Ashley"];
在这个数组中,我们有两个连续的逗号,而不是一个..我如何确保如果用户输入任何不好的字符,我只需将其取出..如逗号、点等..额外逗号的示例,考虑到我没有其他选择,只能处理生成这样的数组的文本字段,如何实现
如何确保没有在数组中输入两个逗号..这是针对从用户输入生成数组的 Web 应用程序,它是一个文本字段..我无法将其更改为其他任何内容。
例子 .. var names=["Kim",,"Andrew","Ashley"];
在这个数组中,我们有两个连续的逗号,而不是一个..我如何确保如果用户输入任何不好的字符,我只需将其取出..如逗号、点等..额外逗号的示例,考虑到我没有其他选择,只能处理生成这样的数组的文本字段,如何实现
通过函数(见下文)运行数组以删除数组中的无效值。在您的情况下, .中的第二个元素的值未定义["Kim",,"Andrew","Ashley"]
。
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/
这不是一个错误,只是您将表单中的空条目添加到您的数组中。尝试这个:
//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;
两个连续的逗号(或前导逗号)是一个省略号,它增加下一个成员的索引。省略的成员不作为数组的属性存在。要查找此类成员,您可以使用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
这也处理数组文字中的额外空格。