2016-06-29 60 views
0

我创建一个对象从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

您定义的空对象的位置:

"variables":[ 
       { 
       } 
      ], 
+0

正确的,已经通过删除额外的'{}'解决了这个问题 – Valip

+0

因此,@pavelvaleriu,你应该接受这个而不是在几分钟后提供相同的答案。 – JAAulde

1

如下更改您的代码来解决这个问题:

电流: “变量”:[{}],

要解决: “变量”:[],