Javascript JSON自己的属性名
我需要一些JavaScript方面的帮助。问题是我有一个类似于下面所示的JSON数据,但问题是我无法访问所有对象。使用我的函数,我可以访问[“x”、“y”、“z”],但我无法访问其他函数“p、q、r.k、a”。有人能帮我解决这个问题吗,请不要使用Object.Keys()。我不知道如何在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
谢谢你我不熟悉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"]