如何访问数组中的变量

时间:2017-01-10 03:27:32

标签: javascript arrays

所以,我昨天和今天一直试图解决这个问题,但无法弄明白。我在一个名为

的变量中返回了以下内容
var myRequest = req.body
console.log(myRequest) 

产生以下内容:

{
    "methodcall": {
        "methodname": ["userLogin"],
        "params": [{
            "param": [{
                "value": [{
                    "string": ["test1"]
                }]
            }, {
                "value": [{
                    "string": ["password"]
                }]
            }]
        }]
    }
}

现在,我需要访问params键,并访问第一个param值,以便第一个param值字符串中返回的内容在变量中存储为username,并在param值字符串中返回任何内容(第二个) ),存储为密码。

所以最后的效果是这样的:

var username = myRequest.methodcall.params.param...first value string
var password = myRequest.methodcall.params.param...second value string

然而,我真的很难理解如何做到这一点。我猜测每个循环都会出现在这里,但是我没有经验,所以会很感激一些提示。

此外,当我尝试myRequest.methodcall时,我会继续返回未定义的内容。

任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:0)

您发布的是JSON。你需要设置它:

var myRequest = JSON.parse(req.body)

这将允许您像普通的js对象一样访问它。

答案 1 :(得分:0)

听起来你的价值是JSON,首先解析它然后你应该能够得到它的值:

var myRequest = JSON.parse(req.body);

var userName = myRequest.methodcall.params[0].param[0].value[0].string[0];
var password = myRequest.methodcall.params[0].param[1].value[0].string[0];

答案 2 :(得分:0)

使用.访问对象中的密钥,使用[]访问数组中的索引。

此代码应该有效:

var username = myRequest.methodcall.params[0].param[0].value[0].string[0]

答案 3 :(得分:0)

如果您想使用循环,请获取值test1password等。您可以使用循环访问param数组:

var params = myRequest.methodcall.params[0].param;

params.forEach(function(item){
    console.log(item.value[0].string[0]);
});

Fiddle

答案 4 :(得分:0)

//var myRequest = JSON.parse(req.body) // if JSON

var myRequest = {
  "methodcall": {
    "methodname": ["userLogin"],
    "params": [{
      "param": [{
        "value": [{
          "string": ["test1"]
        }]
      }, {
        "value": [{
          "string": ["password"]
        }]
      }]
    }]
  }
};

var params = myRequest.methodcall.params;
var uname, pwd;
for (var i = 0; i < params.length; i++) {
  console.log("uname is " + params[i].param[0].value[0].string);
  console.log("pwd is " + params[i].param[1].value[0].string)
}

答案 5 :(得分:0)

如果您的响应结构相同,则无需进行循环或其他操作,只需直接访问响应中的用户名和密码即可。 试试这个。

var username = myRequest.methodcall.params[0].param[0].value[0].string[0];
var password = myRequest.methodcall.params[0].param[1].value[0].string[0];

答案 6 :(得分:-1)

你调试了代码吗? 我的意思是这些代码:

var username = myRequest.methodcall.params.param[0];
var password = myRequest.methodcall.params.param[1];