মান লিয়ে, আমাদের একটি নেস্টেড অবজেক্ট আছে যাতে কিছু পেটের ডেটা আছে -
const pets = {
owner1: 'Frank',
owner2: 'Curly',
owner3: 'Maurice',
dogs: {
terriers: {
name1: 'Fido',
name2: 'Woofy',
name3: {
goodDog: 'Frank',
badDog: 'Judas',
}
},
poodles: {
name1: 'Curly',
name2: 'Fido',
},
},
};
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অবজেক্ট গ্রহণ করবে। ফাংশনটি অবজেক্টে থাকা সব ডুপ্লিকেট ভ্যালু লোকেট করবে এবং তারপর একটি অ্যারে রিটার্ন করবে যাতে অবজেক্ট থেকে সব ডুপ্লিকেট ভ্যালু থাকবে।
এই অবজেক্টের জন্য আউটপুট হবে -
const output = ['Frank', 'Curly', 'Fido'];
উদাহরণ
const pets = {
owner1: 'Frank',
owner2: 'Curly',
owner3: 'Maurice',
dogs: {
terriers: {
name1: 'Fido',
name2: 'Woofy',
name3: {
goodDog: 'Frank',
badDog: 'Judas',
}
},
poodles: {
name1: 'Curly',
name2: 'Fido',
},
},
};
const recursiveSearch = (obj, map = {}, res = []) => {
Object.keys(obj).forEach(key => {
if(typeof obj[key] === "object"){
return recursiveSearch(obj[key], map, res);
};
map[obj[key]] = (map[obj[key]] || 0) + 1;
if(map[obj[key]] === 2){
res.push(obj[key]);
}
});
return res;
};
console.log(recursiveSearch(pets));
আউটপুট
কনসোলে আউটপুট হবে -
['Frank', 'Curly', 'Fido']