प्रिय स्टैक ओवरफ़्लो समुदाय,
मैं वस्तु संपत्ति प्रतिस्थापन (आप नीचे करने के लिए छोड़ सवाल को पढ़ने के लिए कर सकते हैं) के बारे में एक प्रश्न है। मैं एक आवेदन पर काम कर रहा हूं, जो बैक एंड से शिक्षक वस्तु प्राप्त करता है। बैक-एंड डेटाबेस की क्वेरी के लिए जावा हाइबरनेट का उपयोग कर रहा है और ऑब्जेक्ट को फ्रंट एंड (मुझे) भेजने के लिए क्रमबद्ध करता है। मुझे यह शिक्षक वस्तु मिलती है, लेकिन वस्तु में परिपत्र संदर्भ हैं। ऑब्जेक्ट के स्थान पर संदर्भ आईडी जोड़कर कौन सा जावा संभालता है। तो मुझे यह शिक्षक वस्तु मिलती है, और ऑब्जेक्ट के अंदर ये संदर्भ आईडी है कि मुझे वास्तविक वस्तु के साथ प्रतिस्थापित करने की आवश्यकता है, समस्या यह है कि वे नेस्टेड ऑब्जेक्ट्स हैं। मैं वर्तमान में जो करता हूं वह एक ढेर बनाता है, और इन आईडी और संदर्भ आईडी को खोजने के लिए वस्तुओं को पार करता है। जब मुझे एक आईडी मिलती है तो मैं इसे ढेर पर रखता हूं। कोई समस्या नहीं है, लेकिन जब मुझे संदर्भ आईडी मिलती है तो मुझे इसे स्टैक पर मिलने वाले किसी के साथ दोबारा विभाजित करने की आवश्यकता होती है। एक बार फिर यह करना मुश्किल है क्योंकि मैं इन्हें रिकर्सिव फ़ंक्शन के माध्यम से करता हूं, इसलिए मेरे पास भौतिक वस्तु नहीं है।जे एस - संपत्ति प्रतिस्थापन
मेरे सवाल है, मैं कैसे नेस्टेड वस्तु गुण
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);
, तुम्हारे पास क्या है और तुम क्या चाहते हो? कृपया पहले और बाद में डेटा जोड़ें। –
@NinaScholz मैं वर्तमान में डेटा के साथ कुछ भी नहीं कर रहा हूं, क्योंकि मुझे यकीन नहीं है कि मैं अपने फ़ंक्शन से ऑब्जेक्ट डेटा का संदर्भ कैसे दे सकता हूं। सही बात ? – John
'@ ref' एक कारण के लिए है। यदि आप वास्तविक वस्तुओं के साथ 'आईडी' को प्रतिस्थापित करने का प्रयास करते हैं, तो आप परिपत्र संदर्भों को हिट कर सकते हैं जो आपको स्मृति रिसाव तक ले जाएंगे (जिससे अधिकतम कॉल स्टैक आकार त्रुटि हो जाएगी)। –