我需要一些JavaScript帮助。问题是我有一个类似于以下显示的JSON数据,但问题是我无法访问所有对象。通过我的功能,我可以访问[“x”,“y”,“z”],但我无法获得其他人“p,q,rk,a”。任何人都可以帮助我解决这个问题,请不要使用Object.Keys()。我不知道如何在Json Data中迭代。
var Objectkeys = function(obj){
a = []
for(var prop in obj){
if(obj.hasOwnProperty(prop)){
a.push(prop)
}
}
return a;
};
var obj = {
x: 1,
y: 2,
z: {
p: "Hello",
q: "Master",
r: {
k: "Rotten",
a: "apple"
}
}
};
window.onload = function () {
console.log(Objectkeys(obj));
//console.log(Object.keys(obj));
}
谢谢
答案 0 :(得分:0)
您还需要迭代嵌套对象:
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;
};
答案 1 :(得分:0)
如果您正在使用递归函数,那么只需抓取对象键即可:
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"]
答案 2 :(得分:-1)
我不熟悉js,但是你不必首先检查一个属性是否包含对象,如果是,则迭代通过那些?那么在if语句中有一个for语句吗?