Nếu bạn đang đi qua một thực tế JSON chuỗi sau đó bạn có thể sử dụng một hàm Reviver.
function traverse (json, callback) {
JSON.parse(json, function (key, value) {
if (key !== '') {
callback.call(this, key, value)
}
return value
})
}
traverse('{"a":{"b":{"c":{"d":1}},"e":{"f":2}}}', function (key, value) {
console.log(arguments)
})
Khi đi qua một đối tượng:
function traverse (obj, callback, trail) {
trail = trail || []
Object.keys(obj).forEach(function (key) {
var value = obj[key]
if (Object.getPrototypeOf(value) === Object.prototype) {
traverse(value, callback, trail.concat(key))
} else {
callback.call(obj, key, value, trail)
}
})
}
traverse({a: {b: {c: {d: 1}}, e: {f: 2}}}, function (key, value, trail) {
console.log(arguments)
})
Nguồn
2015-10-08 17:17:31
Tránh traverse (v) trong đó v == null, vì (typeof rỗng == "đối tượng") === đúng. 'chức năng đi ngang (jsonObj) { nếu (jsonObj && typeof jsonObj ==" đối tượng ") { ...' –