使用数组元素构建JSON数组值是未定义的

时间:2016-12-06 11:18:23

标签: javascript arrays json for-loop javascript-objects

我想要实现的是通过REST消息发送值,我试图将这些值放在JSON格式中,这样它们就可以放在表单上的字段中。

var membersToAddArry = [];
membersToAddArry = request.queryParams.MembersToAdd.toString().split(";");    

   for(var x = 0; x < membersToAddArry.length-1; x++)
    {
        dn = membersToAddArry[x].toString();
        userJSONAdd["DistinguishedName"] = dn;
        userJSONAddn[x] = userJSONAdd;
    }
    return userJSONAddn;

发送的数据:

CN=smcgh,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com;

CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com;

返回:

    {
  "result": {
    "0": {
      "DistinguishedName": "CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com"
    },
    "1": {
      "DistinguishedName": "CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com"
    }
  }
}

两位信息正在重复我怎么能阻止这个?

1 个答案:

答案 0 :(得分:1)

在for循环中重新启动对象userJSONAdd。否则,您将相同对象添加两次,但更改字段DistinguishedName的值,以便获得相同值的两倍:

var membersToAddArry = [];
membersToAddArry = request.queryParams.MembersToAdd.split(";");    

for(var x = 0; x < membersToAddArry.length-1; x++)
{
    userJSONAdd = {};
    dn = membersToAddArry[x].toString();
    userJSONAdd["DistinguishedName"] = dn;
    userJSONAddn[x] = userJSONAdd;
}
return userJSONAddn;