-1

配列に 2 つのカンマが入力されていないことを確認するにはどうすればよいですか ..これは、ユーザー入力から配列を生成する Web アプリケーション用であり、それはテキスト フィールドです..他のものに変更することはできません。

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

この配列には、1 つではなく 2 つの連続するコンマがあります..ユーザーが適切ではない文字を入力した場合、それを削除するようにするにはどうすればよいですか..コンマ、ドットなどのように..余分なコンマの例、このような配列を生成するテキストフィールドを処理する以外に選択肢がないことを考えると、これはどのように達成されますか

4

3 に答える 3

1

関数 (以下を参照) を介して配列を実行し、配列内の無効な値を削除します。あなたの場合、の 2 番目の要素の値は定義["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

2 つの連続するコンマ (または先頭のコンマ) は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

これは、配列リテラル内の余分なスペースも処理します。

于 2013-03-26T00:04:37.480 に答える
0

これは言うまでもなくバグではありません。フォームからの null エントリが配列に追加されているだけです。これを試して:

//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 に答える