注:このソリューションでは、ネストされた配列を横断するように更新されました。
私はそれを解決するために時間がかかりました、なぜなら彼のデバッギングツールで今演奏されている可能性があります(コメントを参照してください)でもこの問題の閉鎖したいです。
この問題に対する私のアプローチは、instanceof
APIを使用して解決しました。
を参照してください:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/instanceof
私は
root.hasOwnProperty(i)
if (root[i] !== null && root[i] !== undefined && typeof(root[i] == 'object'))
のようなものを長いったらしいチェックを行うために、余分なコードに配置する必要はありませんその方法例:
var data = {
person: {
firstName: 'Mary',
likes: {
food: "apple",
drinks: "water",
d: null,
x : {
y: "z",
ddd: [
{ bbb: "lol"},
{ PPP: "lol2"}
]
},
o: undefined
}
},
color: 'blue'
};
function walk(root) {
for (let property in root) {
console.log(property);
if (root[property] instanceof Array)
root[property].forEach(item => { walk(item); });
else if (root[property] instanceof Object)
walk(root[property]);
// Extend else if statement to handle customize structures appropriately.
}
}
walk(data);
出力:
person
firstName
likes
food
drinks
d
x
y
ddd
e
bbb
PPP
o
color
開き、デバッガ、それを見つけます。 – zerkms
'typeof(root [i] == 'オブジェクト')' - 本当にありますか? – Bergi
@Bergiはデバッガの使い方を学ばせました;-)しかし、10秒後にはすでに回答が投稿されています。 – zerkms