ধরা যাক আমাদের একটি স্টুডেন্ট অবজেক্ট আছে যেখানে দুটি বৈশিষ্ট্যের নাম এবং চিহ্ন রয়েছে। নামকরণ বস্তুর একটি অ্যারে যার প্রতিটি বস্তুর দুটি বৈশিষ্ট্যের নাম এবং রোল রয়েছে, একইভাবে চিহ্ন হল বস্তুর বিন্যাস যার প্রতিটি বস্তুর বৈশিষ্ট্য চিহ্ন এবং রোল রয়েছে। আমাদের কাজ হল প্রতিটি বস্তুর উপযুক্ত রোল প্রপার্টি অনুযায়ী থিমমার্ক এবং নামের বৈশিষ্ট্যগুলিকে একত্রিত করা৷
ছাত্ররা অবজেক্ট এখানে দেওয়া হল -
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); এই কোডের সময় জটিলতা হল O(mn) যেখানে m এবং n হল অ্যারের নাম এবং চিহ্নগুলির স্বতন্ত্র আকার এবং এই O(1) এর স্থান জটিলতা। যাইহোক, মার্কস অ্যারের প্রতিটি উপাদানের জন্য একটি নতুন সম্পত্তি তৈরি করা হচ্ছে।
এখানে সম্পূর্ণ কোড -
উদাহরণ
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' }
]
}