JSFiddle - React, Tailwind, and code Playground

by Samuel Guimarães

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.2/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>

JavaScript

var files = {
  'about.html' : {
    path : './about.html'
  },
  'about2.html' : {
    path : './about2.html'
  },
  'about3.html' : {
    path : './about3.html'
  },
  folderName : {
    path : './folderName',
    children : {
      'sub-child.html' : {
        path : 'folderName/sub-child.html'
      }
    }
  }
};

function getRecursiveFilter(searchText) { 
    var recursiveFilter = function(x) {
        return x.path == searchText || 
            (typeof x.children != 'undefined' 
                && arguments.callee(x.children['sub-child.html']) );
    };
    return  recursiveFilter;
}

function test(searchText) {
    console.log('Query "' + searchText + '" result: ' + JSON.stringify(
        _.filter(files, getRecursiveFilter(searchText))
    ));
}

test('./about2.html');
test('folderName/sub-child.html');