JSFiddle - React, Tailwind, and code Playground

by bryandowning

JavaScript

var data = {
    item1: 'value1',
    item2: 'value2',
    group1: {
        item1: 'value1',
        item2: 'value2'
    },
    data: data
}

var groups = {
    group1: data.group1
};

var testResults = [];
testResults.push(search(data, 'value2'));
console.log(testResults);

function search( data, query ) {
    
    var results = [];
    var cache = [];
    
    (function reallySearch(data) {
        if (typeof data === 'object') {
            /*if (cache.indexOf(data) > -1) {
                return;
            } else {
                cache.push(data);
            }*/
            
            for (var key in data) {
                if (data.hasOwnProperty(key)) {
                
                    var item = data[key];
                    if (typeof item === 'object') {
                        reallySearch(item);
                    }
            
                    if (item === query) {
                        results.push(item);
                    }
                    
                }
            }
        }
    })(data);
    
    return results;
}