मान लीजिए, हमारे पास एक नेस्टेड ऑब्जेक्ट है जिसमें कुछ पालतू जानवरों के बारे में डेटा है जैसे -
const pets = {
owner1: 'Frank',
owner2: 'Curly',
owner3: 'Maurice',
dogs: {
terriers: {
name1: 'Fido',
name2: 'Woofy',
name3: {
goodDog: 'Frank',
badDog: 'Judas',
}
},
poodles: {
name1: 'Curly',
name2: 'Fido',
},
},
};
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसा एक ऑब्जेक्ट लेता है।
फ़ंक्शन को ऑब्जेक्ट में मौजूद सभी डुप्लिकेट मानों का पता लगाना चाहिए, और फिर फ़ंक्शन को एक सरणी लौटानी चाहिए जिसमें ऑब्जेक्ट से सभी डुप्लिकेट मान हों।
तो, इस ऑब्जेक्ट के लिए, आउटपुट होना चाहिए -
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' ]