列出嵌套 JavaScript 对象中的所有重复值
javascriptweb developmentfront end technologyobject oriented programming
假设,我们有一个嵌套对象,其中包含有关某些宠物的数据,例如 −
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' ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

