0
        dataValidation = "min:7 max:20 alphanumeric required";
        var params = [];
        dataValidation.replace(/([^\s]+).?/g, function(a, b){
             var split = b.split(':');
             if (split[1])
                params.push([split[0]] = split[1]);
             else
                params.push([split[0]] = true);
              return
            });

私のコード、キーと値、分割[0]と分割[1]を使用してオブジェクトの配列を作成したいのですが、この結果はそのようなものです

[「7」、「20」、真、真]

それ以外の

[{分:7}, {最大:20}...].

また、置換内で関数を作成することが最善の方法であるかどうかもわかりません。

4

2 に答える 2

0

コードを変更することで解決しました

        dataValidation.replace(/([^\s]+).?/g, function(a, b){
            var split = b.split(':');
            var obj = {};
            if (split[1])
                obj[split[0]] = split[1];
            else
                obj[split[0]] = true;
            params.push(obj);
            return
        });
于 2013-10-08T12:32:24.197 に答える
0

// 正規表現は貪欲なので代替

var output = [], tmp;
['foo:bar','bar:baz'].forEach(function(el, idx, arr) {
  tmp = {};
  tmp[el.substr(0,el.indexOf(':'))] = el.substr(el.indexOf(':')+1);
  output.push(tmp);
});
console.log(output);
//> [{bar:"baz"},{foo:"bar"}]
于 2013-10-08T12:33:52.677 に答える