Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@shakhal
Last active January 27, 2023 22:52
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save shakhal/3cf5402fc61484d58c8d to your computer and use it in GitHub Desktop.
Save shakhal/3cf5402fc61484d58c8d to your computer and use it in GitHub Desktop.
Find values in JSON by key, recursively
function findValues(obj, key){
return findValuesHelper(obj, key, []);
}
function findValuesHelper(obj, key, list) {
if (!obj) return list;
if (obj instanceof Array) {
for (var i in obj) {
list = list.concat(findValuesHelper(obj[i], key, []));
}
return list;
}
if (obj[key]) list.push(obj[key]);
if ((typeof obj == "object") && (obj !== null) ){
var children = Object.keys(obj);
if (children.length > 0){
for (i = 0; i < children.length; i++ ){
list = list.concat(findValuesHelper(obj[children[i]], key, []));
}
}
}
return list;
}
@dr-mohamed-benkhalifa
Copy link

dr-mohamed-benkhalifa commented Feb 8, 2018

Thank you so much!

TS version indeed:

findValuesHelper(obj, key) {
        let list = [ ];
        if (!obj) return list;
        if (obj instanceof Array) {
            for (var i in obj) {
                list = list.concat(this.findValuesHelper(obj[i], key));
            }
            return list;
        }
        if (obj[key]) list.push(obj[key]);

        if ((typeof obj == "object") && (obj !== null)) {
            let children = Object.keys(obj);
            if (children.length > 0) {
                for (let i = 0; i < children.length; i++) {
                    list = list.concat(this.findValuesHelper(obj[children[i]], key));
                }
            }
        }
        return list;
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment