Finding a key in json












-1















I have the following json:



let object = {
"statusCode": 200,
"body": [{
"id": "3",
"externalId": "billgates",
"status": "active",
"createdAt": "2018-11-14T08:36:50.967Z",
"updatedAt": "2018-11-14T08:36:50.967Z",
"firstName": "yehu",
"lastName": "da",
"email": "bg@g.com"
}
],
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "189",
"etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
"date": "<<Masked>>",
"connection": "close"
},
"request": {
"uri": {
"protocol": "http:",
"slashes": true,
"auth": null,
"host": "mysite",
"port": "4202",
"hostname": "mysite",
"hash": null,
"search": "?username=billgates",
"query": "username=billgates",
"pathname": "/v1/users",
"path": "/v1/users?username=billgates",
"href": "http://mysite"
},
"method": "GET",
"headers": {
"Content-Type": "application/json",
"accept": "application/json",
"content-length": 2
}
}


}



i wrote a function that gets a key and a value and if key with that value found in json returns true otherwise false, here is the function:



let key = "externalId";
let value = "bilgates"
let findValue = function findValue(obj, key, value) {
for(let localKey in obj){
if(obj.hasOwnProperty(localKey)){
if(localKey === key){
res = obj[localKey] === value;
return res;
}
else{
let val = obj[localKey];
findValue(val, key, value);
}
}
}
}
let res = findValue(object, key, value)
console.log(res);


after running the function in VS Code (node.js) I get the following error:



RangeError: Maximum call stack size exceeded



after debugging the function, I could not found the problem. It seems that after some point, localKey will be always zero and obj[localKey] will be always 3.










share|improve this question


















  • 2





    hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

    – Bravo
    Nov 15 '18 at 9:45













  • Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

    – CertainPerformance
    Nov 15 '18 at 9:49






  • 1





    quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

    – Bravo
    Nov 15 '18 at 9:52











  • @Bravo why you wouldn't do it this way. whats wrong with it?

    – Limbo
    Nov 15 '18 at 10:09











  • to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

    – Bravo
    Nov 15 '18 at 10:10
















-1















I have the following json:



let object = {
"statusCode": 200,
"body": [{
"id": "3",
"externalId": "billgates",
"status": "active",
"createdAt": "2018-11-14T08:36:50.967Z",
"updatedAt": "2018-11-14T08:36:50.967Z",
"firstName": "yehu",
"lastName": "da",
"email": "bg@g.com"
}
],
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "189",
"etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
"date": "<<Masked>>",
"connection": "close"
},
"request": {
"uri": {
"protocol": "http:",
"slashes": true,
"auth": null,
"host": "mysite",
"port": "4202",
"hostname": "mysite",
"hash": null,
"search": "?username=billgates",
"query": "username=billgates",
"pathname": "/v1/users",
"path": "/v1/users?username=billgates",
"href": "http://mysite"
},
"method": "GET",
"headers": {
"Content-Type": "application/json",
"accept": "application/json",
"content-length": 2
}
}


}



i wrote a function that gets a key and a value and if key with that value found in json returns true otherwise false, here is the function:



let key = "externalId";
let value = "bilgates"
let findValue = function findValue(obj, key, value) {
for(let localKey in obj){
if(obj.hasOwnProperty(localKey)){
if(localKey === key){
res = obj[localKey] === value;
return res;
}
else{
let val = obj[localKey];
findValue(val, key, value);
}
}
}
}
let res = findValue(object, key, value)
console.log(res);


after running the function in VS Code (node.js) I get the following error:



RangeError: Maximum call stack size exceeded



after debugging the function, I could not found the problem. It seems that after some point, localKey will be always zero and obj[localKey] will be always 3.










share|improve this question


















  • 2





    hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

    – Bravo
    Nov 15 '18 at 9:45













  • Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

    – CertainPerformance
    Nov 15 '18 at 9:49






  • 1





    quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

    – Bravo
    Nov 15 '18 at 9:52











  • @Bravo why you wouldn't do it this way. whats wrong with it?

    – Limbo
    Nov 15 '18 at 10:09











  • to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

    – Bravo
    Nov 15 '18 at 10:10














-1












-1








-1








I have the following json:



let object = {
"statusCode": 200,
"body": [{
"id": "3",
"externalId": "billgates",
"status": "active",
"createdAt": "2018-11-14T08:36:50.967Z",
"updatedAt": "2018-11-14T08:36:50.967Z",
"firstName": "yehu",
"lastName": "da",
"email": "bg@g.com"
}
],
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "189",
"etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
"date": "<<Masked>>",
"connection": "close"
},
"request": {
"uri": {
"protocol": "http:",
"slashes": true,
"auth": null,
"host": "mysite",
"port": "4202",
"hostname": "mysite",
"hash": null,
"search": "?username=billgates",
"query": "username=billgates",
"pathname": "/v1/users",
"path": "/v1/users?username=billgates",
"href": "http://mysite"
},
"method": "GET",
"headers": {
"Content-Type": "application/json",
"accept": "application/json",
"content-length": 2
}
}


}



i wrote a function that gets a key and a value and if key with that value found in json returns true otherwise false, here is the function:



let key = "externalId";
let value = "bilgates"
let findValue = function findValue(obj, key, value) {
for(let localKey in obj){
if(obj.hasOwnProperty(localKey)){
if(localKey === key){
res = obj[localKey] === value;
return res;
}
else{
let val = obj[localKey];
findValue(val, key, value);
}
}
}
}
let res = findValue(object, key, value)
console.log(res);


after running the function in VS Code (node.js) I get the following error:



RangeError: Maximum call stack size exceeded



after debugging the function, I could not found the problem. It seems that after some point, localKey will be always zero and obj[localKey] will be always 3.










share|improve this question














I have the following json:



let object = {
"statusCode": 200,
"body": [{
"id": "3",
"externalId": "billgates",
"status": "active",
"createdAt": "2018-11-14T08:36:50.967Z",
"updatedAt": "2018-11-14T08:36:50.967Z",
"firstName": "yehu",
"lastName": "da",
"email": "bg@g.com"
}
],
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "189",
"etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
"date": "<<Masked>>",
"connection": "close"
},
"request": {
"uri": {
"protocol": "http:",
"slashes": true,
"auth": null,
"host": "mysite",
"port": "4202",
"hostname": "mysite",
"hash": null,
"search": "?username=billgates",
"query": "username=billgates",
"pathname": "/v1/users",
"path": "/v1/users?username=billgates",
"href": "http://mysite"
},
"method": "GET",
"headers": {
"Content-Type": "application/json",
"accept": "application/json",
"content-length": 2
}
}


}



i wrote a function that gets a key and a value and if key with that value found in json returns true otherwise false, here is the function:



let key = "externalId";
let value = "bilgates"
let findValue = function findValue(obj, key, value) {
for(let localKey in obj){
if(obj.hasOwnProperty(localKey)){
if(localKey === key){
res = obj[localKey] === value;
return res;
}
else{
let val = obj[localKey];
findValue(val, key, value);
}
}
}
}
let res = findValue(object, key, value)
console.log(res);


after running the function in VS Code (node.js) I get the following error:



RangeError: Maximum call stack size exceeded



after debugging the function, I could not found the problem. It seems that after some point, localKey will be always zero and obj[localKey] will be always 3.







javascript node.js json recursion






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 '18 at 9:40









LimboLimbo

131112




131112








  • 2





    hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

    – Bravo
    Nov 15 '18 at 9:45













  • Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

    – CertainPerformance
    Nov 15 '18 at 9:49






  • 1





    quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

    – Bravo
    Nov 15 '18 at 9:52











  • @Bravo why you wouldn't do it this way. whats wrong with it?

    – Limbo
    Nov 15 '18 at 10:09











  • to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

    – Bravo
    Nov 15 '18 at 10:10














  • 2





    hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

    – Bravo
    Nov 15 '18 at 9:45













  • Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

    – CertainPerformance
    Nov 15 '18 at 9:49






  • 1





    quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

    – Bravo
    Nov 15 '18 at 9:52











  • @Bravo why you wouldn't do it this way. whats wrong with it?

    – Limbo
    Nov 15 '18 at 10:09











  • to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

    – Bravo
    Nov 15 '18 at 10:10








2




2





hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

– Bravo
Nov 15 '18 at 9:45







hint ... it's "id": "3", that is causing the problem (you need to check if obj[localKey] is an actual OBJECT before recursing ...you'll also need to recurse PROPERLY - because unless the key is found in the top level, you'll always get undefined once you fix your infinite recursion

– Bravo
Nov 15 '18 at 9:45















Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

– CertainPerformance
Nov 15 '18 at 9:49





Note that if you're dealing with a plain object without a meaningful internal prototype, the hasOwnProperty check is superfluous. (or just use Object.keys/entries instead, which only iterate over properties directly on the object)

– CertainPerformance
Nov 15 '18 at 9:49




1




1





quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

– Bravo
Nov 15 '18 at 9:52





quickest fix for your code pastebin.com/8YQb4mQ3 - but I wouldn't do it this way at all

– Bravo
Nov 15 '18 at 9:52













@Bravo why you wouldn't do it this way. whats wrong with it?

– Limbo
Nov 15 '18 at 10:09





@Bravo why you wouldn't do it this way. whats wrong with it?

– Limbo
Nov 15 '18 at 10:09













to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

– Bravo
Nov 15 '18 at 10:10





to be honest, I don't know why I said that :p I quickly tried other ways and realised the error of that part of the statement :

– Bravo
Nov 15 '18 at 10:10












1 Answer
1






active

oldest

votes


















0














Though a different solution, still you can try below approach






let object = {
"statusCode": 200,
"body": [{
"id": "3",
"externalId": "billgates",
"status": "active",
"createdAt": "2018-11-14T08:36:50.967Z",
"updatedAt": "2018-11-14T08:36:50.967Z",
"firstName": "yehu",
"lastName": "da",
"email": "bg@g.com"
}
],
"headers": {
"x-powered-by": "Express",
"access-control-allow-origin": "*",
"content-type": "application/json; charset=utf-8",
"content-length": "189",
"etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
"date": "<<Masked>>",
"connection": "close"
},
"request": {
"uri": {
"protocol": "http:",
"slashes": true,
"auth": null,
"host": "mysite",
"port": "4202",
"hostname": "mysite",
"hash": null,
"search": "?username=billgates",
"query": "username=billgates",
"pathname": "/v1/users",
"path": "/v1/users?username=billgates",
"href": "http://mysite"
},
"method": "GET",
"headers": {
"Content-Type": "application/json",
"accept": "application/json",
"content-length": 2
}
}
}

function findValue(obj, k, v) {
let res = false

if(!obj || typeof obj != "object") return false

if (obj[k] == v) return true
else {
for (let [key, value] of Object.entries(obj)) {
if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
if(typeof value == "object") { res = res || findValue(value, k, v) }
}
}
return res
}

console.log(findValue(object, 'externalId', 'billgates'))

console.log(findValue(object, 'lastName', 'da'))

console.log(findValue(object, 'x-powered-by', 'Express'))

console.log(findValue(object, 'externalId', 'Nitish'))








share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316447%2ffinding-a-key-in-json%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Though a different solution, still you can try below approach






    let object = {
    "statusCode": 200,
    "body": [{
    "id": "3",
    "externalId": "billgates",
    "status": "active",
    "createdAt": "2018-11-14T08:36:50.967Z",
    "updatedAt": "2018-11-14T08:36:50.967Z",
    "firstName": "yehu",
    "lastName": "da",
    "email": "bg@g.com"
    }
    ],
    "headers": {
    "x-powered-by": "Express",
    "access-control-allow-origin": "*",
    "content-type": "application/json; charset=utf-8",
    "content-length": "189",
    "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
    "date": "<<Masked>>",
    "connection": "close"
    },
    "request": {
    "uri": {
    "protocol": "http:",
    "slashes": true,
    "auth": null,
    "host": "mysite",
    "port": "4202",
    "hostname": "mysite",
    "hash": null,
    "search": "?username=billgates",
    "query": "username=billgates",
    "pathname": "/v1/users",
    "path": "/v1/users?username=billgates",
    "href": "http://mysite"
    },
    "method": "GET",
    "headers": {
    "Content-Type": "application/json",
    "accept": "application/json",
    "content-length": 2
    }
    }
    }

    function findValue(obj, k, v) {
    let res = false

    if(!obj || typeof obj != "object") return false

    if (obj[k] == v) return true
    else {
    for (let [key, value] of Object.entries(obj)) {
    if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
    if(typeof value == "object") { res = res || findValue(value, k, v) }
    }
    }
    return res
    }

    console.log(findValue(object, 'externalId', 'billgates'))

    console.log(findValue(object, 'lastName', 'da'))

    console.log(findValue(object, 'x-powered-by', 'Express'))

    console.log(findValue(object, 'externalId', 'Nitish'))








    share|improve this answer




























      0














      Though a different solution, still you can try below approach






      let object = {
      "statusCode": 200,
      "body": [{
      "id": "3",
      "externalId": "billgates",
      "status": "active",
      "createdAt": "2018-11-14T08:36:50.967Z",
      "updatedAt": "2018-11-14T08:36:50.967Z",
      "firstName": "yehu",
      "lastName": "da",
      "email": "bg@g.com"
      }
      ],
      "headers": {
      "x-powered-by": "Express",
      "access-control-allow-origin": "*",
      "content-type": "application/json; charset=utf-8",
      "content-length": "189",
      "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
      "date": "<<Masked>>",
      "connection": "close"
      },
      "request": {
      "uri": {
      "protocol": "http:",
      "slashes": true,
      "auth": null,
      "host": "mysite",
      "port": "4202",
      "hostname": "mysite",
      "hash": null,
      "search": "?username=billgates",
      "query": "username=billgates",
      "pathname": "/v1/users",
      "path": "/v1/users?username=billgates",
      "href": "http://mysite"
      },
      "method": "GET",
      "headers": {
      "Content-Type": "application/json",
      "accept": "application/json",
      "content-length": 2
      }
      }
      }

      function findValue(obj, k, v) {
      let res = false

      if(!obj || typeof obj != "object") return false

      if (obj[k] == v) return true
      else {
      for (let [key, value] of Object.entries(obj)) {
      if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
      if(typeof value == "object") { res = res || findValue(value, k, v) }
      }
      }
      return res
      }

      console.log(findValue(object, 'externalId', 'billgates'))

      console.log(findValue(object, 'lastName', 'da'))

      console.log(findValue(object, 'x-powered-by', 'Express'))

      console.log(findValue(object, 'externalId', 'Nitish'))








      share|improve this answer


























        0












        0








        0







        Though a different solution, still you can try below approach






        let object = {
        "statusCode": 200,
        "body": [{
        "id": "3",
        "externalId": "billgates",
        "status": "active",
        "createdAt": "2018-11-14T08:36:50.967Z",
        "updatedAt": "2018-11-14T08:36:50.967Z",
        "firstName": "yehu",
        "lastName": "da",
        "email": "bg@g.com"
        }
        ],
        "headers": {
        "x-powered-by": "Express",
        "access-control-allow-origin": "*",
        "content-type": "application/json; charset=utf-8",
        "content-length": "189",
        "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
        "date": "<<Masked>>",
        "connection": "close"
        },
        "request": {
        "uri": {
        "protocol": "http:",
        "slashes": true,
        "auth": null,
        "host": "mysite",
        "port": "4202",
        "hostname": "mysite",
        "hash": null,
        "search": "?username=billgates",
        "query": "username=billgates",
        "pathname": "/v1/users",
        "path": "/v1/users?username=billgates",
        "href": "http://mysite"
        },
        "method": "GET",
        "headers": {
        "Content-Type": "application/json",
        "accept": "application/json",
        "content-length": 2
        }
        }
        }

        function findValue(obj, k, v) {
        let res = false

        if(!obj || typeof obj != "object") return false

        if (obj[k] == v) return true
        else {
        for (let [key, value] of Object.entries(obj)) {
        if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
        if(typeof value == "object") { res = res || findValue(value, k, v) }
        }
        }
        return res
        }

        console.log(findValue(object, 'externalId', 'billgates'))

        console.log(findValue(object, 'lastName', 'da'))

        console.log(findValue(object, 'x-powered-by', 'Express'))

        console.log(findValue(object, 'externalId', 'Nitish'))








        share|improve this answer













        Though a different solution, still you can try below approach






        let object = {
        "statusCode": 200,
        "body": [{
        "id": "3",
        "externalId": "billgates",
        "status": "active",
        "createdAt": "2018-11-14T08:36:50.967Z",
        "updatedAt": "2018-11-14T08:36:50.967Z",
        "firstName": "yehu",
        "lastName": "da",
        "email": "bg@g.com"
        }
        ],
        "headers": {
        "x-powered-by": "Express",
        "access-control-allow-origin": "*",
        "content-type": "application/json; charset=utf-8",
        "content-length": "189",
        "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
        "date": "<<Masked>>",
        "connection": "close"
        },
        "request": {
        "uri": {
        "protocol": "http:",
        "slashes": true,
        "auth": null,
        "host": "mysite",
        "port": "4202",
        "hostname": "mysite",
        "hash": null,
        "search": "?username=billgates",
        "query": "username=billgates",
        "pathname": "/v1/users",
        "path": "/v1/users?username=billgates",
        "href": "http://mysite"
        },
        "method": "GET",
        "headers": {
        "Content-Type": "application/json",
        "accept": "application/json",
        "content-length": 2
        }
        }
        }

        function findValue(obj, k, v) {
        let res = false

        if(!obj || typeof obj != "object") return false

        if (obj[k] == v) return true
        else {
        for (let [key, value] of Object.entries(obj)) {
        if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
        if(typeof value == "object") { res = res || findValue(value, k, v) }
        }
        }
        return res
        }

        console.log(findValue(object, 'externalId', 'billgates'))

        console.log(findValue(object, 'lastName', 'da'))

        console.log(findValue(object, 'x-powered-by', 'Express'))

        console.log(findValue(object, 'externalId', 'Nitish'))








        let object = {
        "statusCode": 200,
        "body": [{
        "id": "3",
        "externalId": "billgates",
        "status": "active",
        "createdAt": "2018-11-14T08:36:50.967Z",
        "updatedAt": "2018-11-14T08:36:50.967Z",
        "firstName": "yehu",
        "lastName": "da",
        "email": "bg@g.com"
        }
        ],
        "headers": {
        "x-powered-by": "Express",
        "access-control-allow-origin": "*",
        "content-type": "application/json; charset=utf-8",
        "content-length": "189",
        "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
        "date": "<<Masked>>",
        "connection": "close"
        },
        "request": {
        "uri": {
        "protocol": "http:",
        "slashes": true,
        "auth": null,
        "host": "mysite",
        "port": "4202",
        "hostname": "mysite",
        "hash": null,
        "search": "?username=billgates",
        "query": "username=billgates",
        "pathname": "/v1/users",
        "path": "/v1/users?username=billgates",
        "href": "http://mysite"
        },
        "method": "GET",
        "headers": {
        "Content-Type": "application/json",
        "accept": "application/json",
        "content-length": 2
        }
        }
        }

        function findValue(obj, k, v) {
        let res = false

        if(!obj || typeof obj != "object") return false

        if (obj[k] == v) return true
        else {
        for (let [key, value] of Object.entries(obj)) {
        if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
        if(typeof value == "object") { res = res || findValue(value, k, v) }
        }
        }
        return res
        }

        console.log(findValue(object, 'externalId', 'billgates'))

        console.log(findValue(object, 'lastName', 'da'))

        console.log(findValue(object, 'x-powered-by', 'Express'))

        console.log(findValue(object, 'externalId', 'Nitish'))





        let object = {
        "statusCode": 200,
        "body": [{
        "id": "3",
        "externalId": "billgates",
        "status": "active",
        "createdAt": "2018-11-14T08:36:50.967Z",
        "updatedAt": "2018-11-14T08:36:50.967Z",
        "firstName": "yehu",
        "lastName": "da",
        "email": "bg@g.com"
        }
        ],
        "headers": {
        "x-powered-by": "Express",
        "access-control-allow-origin": "*",
        "content-type": "application/json; charset=utf-8",
        "content-length": "189",
        "etag": "W/"bd-Emx3/KChQLzf9+6bgFSHXPQgDTM"",
        "date": "<<Masked>>",
        "connection": "close"
        },
        "request": {
        "uri": {
        "protocol": "http:",
        "slashes": true,
        "auth": null,
        "host": "mysite",
        "port": "4202",
        "hostname": "mysite",
        "hash": null,
        "search": "?username=billgates",
        "query": "username=billgates",
        "pathname": "/v1/users",
        "path": "/v1/users?username=billgates",
        "href": "http://mysite"
        },
        "method": "GET",
        "headers": {
        "Content-Type": "application/json",
        "accept": "application/json",
        "content-length": 2
        }
        }
        }

        function findValue(obj, k, v) {
        let res = false

        if(!obj || typeof obj != "object") return false

        if (obj[k] == v) return true
        else {
        for (let [key, value] of Object.entries(obj)) {
        if(Array.isArray(value)) { res = res || value.some(d => findValue(d, k, v)) }
        if(typeof value == "object") { res = res || findValue(value, k, v) }
        }
        }
        return res
        }

        console.log(findValue(object, 'externalId', 'billgates'))

        console.log(findValue(object, 'lastName', 'da'))

        console.log(findValue(object, 'x-powered-by', 'Express'))

        console.log(findValue(object, 'externalId', 'Nitish'))






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 15 '18 at 10:53









        Nitish NarangNitish Narang

        2,9601815




        2,9601815
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53316447%2ffinding-a-key-in-json%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python