Advertisement
Kali_prasad

finding a key in nested object array

Oct 15th, 2022
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var target=[{"key1": "value1", "key2": "value22","obj":{"key3": "value3"}},{"key4": "value4"}]
  2. var refer=[{"key1": "value1"}, {"key2": "value2"},{"key5": "value5"}]
  3.  
  4. var referMap=new Map();
  5. var ansMap=new Map();
  6. //building refer map
  7. for(ind in refer){
  8.     for(key in refer[ind]){
  9.         referMap[key]=refer[ind][key];
  10.     }
  11. }
  12. function iteratable(tgtObj){
  13.     if(typeof tgtObj ==='array'||typeof tgtObj ==='object')
  14.     {
  15.         return true
  16.     }
  17.     else{
  18.         return false;
  19.     }
  20. }
  21. function find(tgtObj,tgtKey){
  22.     if(iteratable(tgtObj)){
  23.         for(key in tgtObj){
  24.             if(iteratable(tgtObj[key])){
  25.                 let ansFound=find(tgtObj[key],tgtKey);
  26.                 if(ansFound){
  27.                     return ansFound
  28.                 }//otherwise we continue to check next objects
  29.             }
  30.             else{
  31.                 if(key===tgtKey){
  32.                     if(tgtObj[key]===referMap[key]){
  33.                         ansMap[key] = "Matched"
  34.                         return true;
  35.                     }
  36.                     else{
  37.                         ansMap[key] = "Not Matched"
  38.                         return false;
  39.                     }
  40.                 }
  41.             }
  42.         }
  43.        // console.log(`done`)
  44.     }
  45.    
  46. }
  47.  
  48. for(key in referMap){
  49.   find(target,key)
  50.  
  51. }
  52. for(key in referMap){
  53.     if(ansMap[key]){
  54.         console.log(`"${key}"`,ansMap[key])
  55.     }
  56.     else{
  57.         console.log(`"${key}" not found`)
  58.     }
  59.    
  60. }
Tags: JavaScript
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement