Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Liệt kê tất cả giá trị trùng lặp trong object lồng nhau JavaScript

Giả sử có object lồng nhau chứa dữ liệu thú cưng:

const pets = { 
  owner1: 'Frank', 
  owner2: 'Curly', 
  owner3: 'Maurice', 
  dogs: { 
    terriers: { 
      name1: 'Fido', 
      name2: 'Woofy', 
      name3: { goodDog: 'Frank', badDog: 'Judas' } 
    }, 
    poodles: { name1: 'Curly', name2: 'Fido' } 
  } 
};

Viết hàm tìm tất cả giá trị trùng lặp trong object, trả về mảng chứa các giá trị trùng.

Kết quả: ['Frank', 'Curly', 'Fido']

Ví dụ

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));

Kết quả

Kết quả in ra console:

[ 'Frank', 'Curly', 'Fido' ]