JS-遍历对象

时间:2017-11-14 17:35:44

标签: javascript object properties traversal

我有一个javascript对象,它将嵌套对象作为属性。我想遍历这个javascript对象,获取对象内每个对象的所有属性的列表。

我编写了一个函数来执行此操作,但由于某些原因,当我运行该函数时,我得到一个无限循环的0' s。有谁知道这个问题的原因和解决方案?

1. var cookieJar = new CookieContainer();
2. var url = baseUrl.AppendPathSegment("api/auth/login");
3. var request = url.EnableCookies();
3.5 request.Client = new FlurlClient();
4. ((HttpClientHandler)request.Client.HttpMessageHandler).CookieContainer = cookieJar;
5. var result = client.PostJsonAsync(new { UserName = userName, Password = password }).Result;
6. var cookies = cookieJar.GetCookies(new Uri(baseUrl));
7. _cookie = cookies[0];

1 个答案:

答案 0 :(得分:2)

最后有一个字符串,此字符串被分隔为单个字符,其中一个索引为零。从该字符串开始,将获取位置0处的字符,并使用单个字符再次调用递归。

 key          value           comment
-----  -------------------  -----------
  a    {
           b: {
               c: "value "
           }
       }

  b    {
           c: "value "
       }

  c    "value "

  0    "v"
  0    "v"
  0    "v"                  and so on

此字符的索引为零,依此类推。

为了防止这种习惯,您可以检查onyl truthy值(防止null)和要遍历的对象类型。

var test = { a: { b: { c: 'value ' } } };

var traverse = function (object) {
    for (var property in object) {
        if (object.hasOwnProperty(property)) {
            console.log(property);
            if (object[property] && typeof object[property] === 'object') {
                traverse(object[property]);
            }
        } else {
            console.log('None');
        }
    }
}
traverse(test);