-1

如何确保没有在数组中输入两个逗号..这是针对从用户输入生成数组的 Web 应用程序,它是一个文本字段..我无法将其更改为其他任何内容。

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

在这个数组中,我们有两个连续的逗号,而不是一个..我如何确保如果用户输入任何不好的字符,我只需将其取出..如逗号、点等..额外逗号的示例,考虑到我没有其他选择,只能处理生成这样的数组的文本字段,如何实现

4

3 回答 3

1

通过函数(见下文)运行数组以删除数组中的无效值。在您的情况下, .中的第二个元素的值未定义["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/

于 2013-03-25T23:39:38.807 回答
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;
于 2013-04-26T20:12:18.483 回答
0

两个连续的逗号(或前导逗号)是一个省略号,它增加下一个成员的索引。省略的成员不作为数组的属性存在。要查找此类成员,您可以使用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

这也处理数组文字中的额外空格。

于 2013-03-26T00:04:37.480 回答