AJ_*_*AJ_ 9 javascript properties object
亲爱的Stack Overflow社区,
我有一个关于对象属性替换的问题(你可以跳到底部阅读问题).我正在开发一个应用程序,它从后端获取一个教师对象.后端使用java hibernate来查询数据库并序列化要发送到前端的对象(我).我得到了这个教师对象,但是对象中有循环引用.通过添加引用ID代替对象来处理哪个java.所以我得到了这个教师对象,并且在对象内部是我需要用实际对象替换的这些引用id,问题在于它们是嵌套对象.我目前所做的是创建一个堆栈,并遍历对象以找到这些id和引用id.当我找到一个id时,我把它放在堆栈上.不是问题,但是当我找到引用ID时,我需要使用我在堆栈中找到的那个来重新引用它.再一次这很难做到,因为我通过递归函数来做这些,所以我没有物理对象.
我的问题是,如何替换嵌套对象属性
var stack = {};
var add = function(prop, data) {
if (prop == '@id') {
stack[data[prop]] = data;
}
if (prop == '@ref') {
// console.log(stack[data[prop]])
// How do i replace the value with the stack object
// test.PROPERTY = stack[data[prop]] is what im looking for
}
}
var traverse = function(object) {
for (var property in object) {
if (object.hasOwnProperty(property)) {
add(property, object);
if (object[property] && typeof object[property] === 'object') {
traverse(object[property]);
}
}
}
}
var test = {
'teacher': {
'course': {
"@id": "1",
'students': [{
"@id": "2",
'name': "John",
'course': {
"@ref": "1",
}
}, {
"@id": "2",
'name': "Next",
'course': {
"@ref": "1",
}
}]
}
}
};
setTimeout(() => {
console.log(stack);
// console.log(test);
}, 500);
traverse(test);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
281 次 |
最近记录: |