空元素被添加到Object

时间:2016-06-29 11:50:00

标签: javascript

我从duplicates数组创建了一个对象,并动态推送到它的元素。一切正常,除了我得到一个额外的空元素,我无法弄清楚为什么......

这是我的代码:

for(i=0;i<duplicates.length; i++) {
  Logger.log(duplicates[i]);
  var request = {
    "name": duplicates[i].scope,
    "id": 3,
    "rules":[
      {
        "name": duplicates[i].scope + " " + "OP SDR Sync",
        "tags": [
          {
            "tagId": 1,
            "variables":[
              {
              }
            ],
            "condition": false,
          },
          {
            "tagId": 1,
            "condition": false,
          }
        ],
        "ruleSetId": 3,
      }
    ]
  }

  for(var j in duplicates[i].variable) {
    request.rules[0].tags[0].variables.push({
      "variable": duplicates[i].variable[j],
      "matchType": "Regex",
      "value": duplicates[i].scopeDef
    });
  }
}

以下是一个例子:

duplicates = [ {scopeDef=.*, scope=Global 4, variable=[trackingcode, v1, v2]}, {scopeDef=https://www.delta.com/, scope=Homepage 2, variable=[v4, v5, v6, v7]}, ]

执行代码后,我得到以下日志:

第一个对象

{name=Global 4, rules=[{name=Global 4 OP SDR Sync, tags=[{variables=[
{}, 
{matchType=Regex, variable=trackingcode, value=.*}, 
{matchType=Regex, variable=v1, value=.*}, 
{matchType=Regex, variable=v2, value=.*}], condition=false, tagId=1.0}, {condition=false, tagId=1.0}], ruleSetId=3.0}], id=3.0}

第二个对象

name=Homepage 2, rules=[{name=Homepage 2 OP SDR Sync, tags=[{variables=[
{}, 
{matchType=Regex, variable=v4, value=https://www.delta.com/}, 
{matchType=Regex, variable=v5, value=https://www.delta.com/}, 
{matchType=Regex, variable=v6, value=https://www.delta.com/}, 
{matchType=Regex, variable=v7, value=https://www.delta.com/}], condition=false, tagId=1.0}, {condition=false, tagId=1.0}], ruleSetId=3.0}], id=3.0}

请注意,两个对象都包含一个空元素...为什么要添加该元素?如何摆脱它??

2 个答案:

答案 0 :(得分:2)

你在这里定义了这个空对象:

"variables":[
              {
              }
            ],

答案 1 :(得分:1)

更改以下代码以解决此问题:

目前:     &#34;变量&#34;:[{}],

修复:     &#34;变量&#34;:[],