Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON自己的属性名_Javascript_Json - Fatal编程技术网

Javascript JSON自己的属性名

Javascript JSON自己的属性名,javascript,json,Javascript,Json,我需要一些JavaScript方面的帮助。问题是我有一个类似于下面所示的JSON数据,但问题是我无法访问所有对象。使用我的函数,我可以访问[“x”、“y”、“z”],但我无法访问其他函数“p、q、r.k、a”。有人能帮我解决这个问题吗,请不要使用Object.Keys()。我不知道如何在Json数据内部迭代 谢谢你我不熟悉js,但是你不需要先检查propertys是否包含对象,如果是,就通过这些对象进行迭代吗?所以if语句中的for语句?您还需要迭代嵌套对象: var Objectkeys

我需要一些JavaScript方面的帮助。问题是我有一个类似于下面所示的JSON数据,但问题是我无法访问所有对象。使用我的函数,我可以访问[“x”、“y”、“z”],但我无法访问其他函数“p、q、r.k、a”。有人能帮我解决这个问题吗,请不要使用Object.Keys()。我不知道如何在Json数据内部迭代




谢谢你

我不熟悉js,但是你不需要先检查propertys是否包含对象,如果是,就通过这些对象进行迭代吗?所以if语句中的for语句?

您还需要迭代嵌套对象:

var Objectkeys = function(obj){
        a = []
        for(var prop in obj){
            if (obj.hasOwnProperty(prop)) {
                a.push(prop);
                if (typeof obj[prop] === 'object') {
                    a = a.concat(Objectkeys(obj[prop]));
                }
            }
        };
        return a;
    };

如果抓取对象键是您所追求的全部,则可以使用递归函数:

function getKeys(obj) {
  var arr = [];
  (function loop(obj) {
    for (var k in obj) {
      if (obj.hasOwnProperty(k)) {
        arr.push(k);
        if (typeof obj[k] === 'object') {
          loop(obj[k]);
        }
      }
    }
  }(obj));
  return arr;
}

console.log(getKeys(obj)); // ["x", "y", "z", "p", "q", "r", "k", "a"]

.

这也是我的想法。使用您的解决方案,输出为[“x”、“y”、“p”、“q”、“k”、“a”],但问题是缺少“z”和“r”。需要一些帮助来解决这个问题。请注意,您在这里展示的不是JSON,它只是一个JavaScript对象。JSON不是JavaScript,而是一种序列化格式(具有与JavaScript兼容的语法)。在JavaScript中,包含JSON的变量应为string类型。解析/计算该字符串后,您将获得该对象。
function getKeys(obj) {
  var arr = [];
  (function loop(obj) {
    for (var k in obj) {
      if (obj.hasOwnProperty(k)) {
        arr.push(k);
        if (typeof obj[k] === 'object') {
          loop(obj[k]);
        }
      }
    }
  }(obj));
  return arr;
}

console.log(getKeys(obj)); // ["x", "y", "z", "p", "q", "r", "k", "a"]