如何在数组中推送以变量作为键和值的新对象,我也不确定我是否用方法替换做对了

How to push new object in array with variables as key and value, also im not sure that i do it right with methode replace

本文关键字:不确定 对象 是否 替换 方法 数组 变量 新对象 键和值      更新时间:2023-09-26
        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
            });

我的代码,我想创建带有键和值的对象数组,split[0] 和 split[1],但结果是这样的

["7"、"20",真,真]

而不是

[{min:7}, {max:20}...].

我也不确定在替换中创建函数是最好的方法。

通过修改代码解决了它

        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
        });

//替代方案,因为正则表达式是贪婪的

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"}]