मान लीजिए हमारे पास एक students ऑब्जेक्ट है जिसमें दो प्रॉपर्टीज names और marks हैं। names, ऑब्जेक्ट्स का एक ऐरे है जिसमें प्रत्येक ऑब्जेक्ट में name और roll प्रॉपर्टीज हैं, इसी तरह marks भी ऑब्जेक्ट्स का एक ऐरे है जिसमें प्रत्येक ऑब्जेक्ट में mark और roll प्रॉपर्टीज हैं। हमारा कार्य marks और names प्रॉपर्टीज को प्रत्येक ऑब्जेक्ट के उपयुक्त roll प्रॉपर्टी के अनुसार संयोजित करना है।
students ऑब्जेक्ट यहां दिया गया है:
const students = {
marks: [{ roll: 123, mark: 89 }, { roll: 143, mark: 69 }, { roll: 126, mark: 91 }, { roll: 112, mark: 80 }],
names: [{ name: 'Aashish', roll: 126 }, { name: 'Sourav', roll: 112 }, { name: 'Vineet', roll: 143 }, { name: 'Kartik', roll: 123 }]
}
आइए combineProperties फ़ंक्शन परिभाषित करें जो students ऑब्जेक्ट लेता है और प्रॉपर्टीज को इन-प्लेस संयोजित करता है यानी बिना किसी अतिरिक्त स्पेस के:
const combineProperties = (students) => {
const { marks, names } = students;
marks.forEach(marksObj => {
const { roll } = marksObj;
marksObj.name = names.find(namesObj => namesObj.roll === roll).name;
});
delete students['names'];
};
combineProperties(students);
console.log(students);
इस कोड की समय जटिलता O(mn) है जहां m और n क्रमशः names और marks ऐरे के आकार हैं और स्पेस जटिलता O(1) है। हालांकि, marks ऐरे के प्रत्येक तत्व के लिए एक नई प्रॉपर्टी बनाई जा रही है।
यहां पूरा कोड है:
उदाहरण
const students = {
marks: [{ roll: 123, mark: 89 }, { roll: 143, mark: 69 }, { roll: 126, mark: 91 }, { roll: 112, mark: 80 }],
names: [{ name: 'Aashish', roll: 126 }, { name: 'Sourav', roll: 112 }, { name: 'Vineet', roll: 143 }, { name: 'Kartik', roll: 123 }]
}
const combineProperties = (students) => {
const { marks, names } = students;
marks.forEach(marksObj => {
const { roll } = marksObj;
marksObj.name = names.find(namesObj => namesObj.roll === roll).name;
});
delete students['names'];
};
combineProperties(students);
console.log(students);
आउटपुट
कंसोल आउटपुट होगा:
{
marks: [
{ roll: 123, mark: 89, name: 'Kartik' },{ roll: 143, mark: 69, name: 'Vineet' },
{ roll: 126, mark: 91, name: 'Aashish' },{ roll: 112, mark: 80, name: 'Sourav' }
]
}