从创建数组的自定义对象 [英] Creating custom object from array

查看:114
本文介绍了从创建数组的自定义对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下元素的数组。我试图从阵列中创建一个对象

  VAR ARR = [
  找到({数量:{$ LT:20}}),
  限制(5),
  跳过(0)
]

下面是我的code。在这里我只得到值作为输出。任何帮助将是有益的。

 为(VAR I = 0; I< arr.length;我++){
        VAR解析度=改编[I] .search(/ \\(/ IG)
        如果(RES!= -1){
            VAR的结果=改编[I] .split(();
            结果=结果[1] .slice(0,-1))
        }
    }

预计输出

  {
      行动:查找,
      值:{数量:{$ LT:20}}。
      限制:5,
      跳过:0
    }


解决方案

匹配拆分为了这个美好的这种东西

\r
\r

VAR ARR = [\r
  找到({数量:{$ LT:20}}),\r
  限制(5),\r
  跳过(0)\r
]\r
\r
\r
变种物镜= {};\r
\r
arr.forEach(函数(X,N){\r
  变种M = x.match(/(\\ w +)\\(\\ S *(+)\\ S * \\)/。?);\r
  如果(N == 0){\r
    obj.action = M [1];\r
    obj.value = M [2];\r
  }其他\r
    物镜[米[1] = M [2];\r
    \r
});\r
\r
文件撰写(< pre>中+ JSON.stringify(OBJ,0,3));

\r

\r
\r

I have an array with below elements. I am trying to create an object from the array

var arr = [
  'find({ qty: { $lt: 20 } } )',
  'limit(5)',
  'skip(0)'
]

Below is my code. where I am getting only values as the output. Any help on this will be helpful

for (var i = 0; i < arr.length; i++) {
        var res = arr[i].search(/\(/ig)
        if (res!= -1) {
            var result = arr[i].split("(");
            result = result[1].slice(0, -1))
        }
    }

Expected Output

 {
      "action": "find",
      "value": "{ qty: { $lt: 20 } }",
      "limit": 5,
      "skip": 0
    }

解决方案

match is better than split for this kind of stuff

var arr = [
  'find({ qty: { $lt: 20 } } )',
  'limit(5)',
  'skip(0)'
]


var obj = {};

arr.forEach(function(x, n) {
  var m = x.match(/(\w+)\(\s*(.+?)\s*\)/);
  if(n == 0) {
    obj.action = m[1];
    obj.value = m[2];
  } else
    obj[m[1]] = m[2];
    
});

document.write("<pre>" + JSON.stringify(obj,0,3));

这篇关于从创建数组的自定义对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆