JSFiddle - React, Tailwind, and code Playground
by dshilkret
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
!function(a){var b=Function("return this")()||(0,eval)("this");"function"==typeof define&&define.amd?define(["jsonq"],function(c){return b.jsonQ=a()}):"object"==typeof module&&module.exports?module.exports=a():b.jsonQ=a()}(function(undefined){function matchPath(a,b){var c=new RegExp("^"+a.join("~~"),"i");return c.test(b.join("~~"))}function newFormat(a){var b=a.keyAdded||[],c=a.json,d=a.path,e=a.newJson;return jsonQ.each(c,function(a,f){var g=d?JSON.parse(JSON.stringify(d)):[];g.push(a),"object"==objType(c)&&(b.indexOf(a)==-1&&(b.push(a),e.jsonQ_path[a]=[]),e.jsonQ_path[a].push({path:g}));var h=objType(f);"object"!=h&&"array"!=h||newFormat({json:f,newJson:e,path:g,keyAdded:b})}),e}var jsonQ=function(a){return new jsonQ.fn.init(a)},error=function(a){throw a},stringify=JSON.stringify,parse=JSON.parse;jsonQ.settings={sort:{order:"ASC",logic:function(a){return a},caseIgnore:!0,allLevel:!0}};var tFunc={topLevel:function(a){for(var b=this.jsonQ_current,c=this.cloneObj(jsonQ()),d=c.jsonQ_current=[],e="",f=a.key,g=a.method,h=0,i=b.length;h<i;h++){var k,j=b[h].path,l=!1,m=j.concat([]);if("parent"==g)0===m.length?l=!0:m.pop();else{var n=m.lastIndexOf(f);n==-1?l=!0:m=m.slice(0,n+1)}k=JSON.stringify(m),e==k||l||d.push({path:m}),e=k}return c.length=d.length,c.selector.push({method:g,key:f}),c},qualTrv:function(a){for(var b=this.jsonQ_current,c=this.cloneObj(jsonQ()),d=c.jsonQ_current=[],e=this.jsonQ_path,f=a.key,g=jsonQ.clone(e[f])||[],h=a.qualifier,i=objType(h),j=a.method,k="find"==j,l=0,m=b.length;l<m;l++){var n=b[l].path,o=[],p=!1;if(!k){if(0===n.length)continue;o=n.concat([]),o.pop()}for(var q=0;q<g.length;q++){var s,r=g[q].path;if(k)s=matchPath(n,r);else{var t=r.concat([]);t.pop(),s=o.join()==t.join()}if(s){var u=tFunc.qTest.call(this,i,h,r,d);u&&(g.splice(q,1),q--),p=!0}else...
JavaScript
var jsonObj = {
"fathers": [{
"age": 44,
"name": "James Martin",
"daughters": [{
"age": 24,
"name": "Michelle",
"husband": {
"age": 30,
"name": "Matthew"
}
}, {
"age": 30,
"name": "Angela",
"husband": {
"age": 23,
"name": "William"
}
}]
}, {
"age": 47,
"name": "David Thompson",
"daughters": [{
"age": 20,
"name": "Amy",
"husband": {
"age": 26,
"name": "Edward"
}
}, {
"age": 20,
"name": "Dorothy",
"husband": {
"age": 23,
"name": "Timothy"
}
}]
}, {
"age": 56,
"name": "Thomas Young",
"daughters": [{
"age": 22,
"name": "Sharon",
"husband": {
"age": 23,
"name": "Jason"
}
}, {
"age": 22,
"name": "Carol",
"husband": {
"age": 23,
"name": "William"
}
}, {
"age": 20,
"name": "Brenda",
"husband": {
"age": 30,
"name": "Timothy"
}
}]
}, {
"age": 53,
"name": "Jason Martinez",
"daughters": [{
"age": 19,
"name": "Jessica",
"husband": {
"age": 24,
"name": "Daniel"
}
}]
}, {
"age": 51,
"name": "Thomas Gonzalez",
"daughters": [{
"age": 23,
"name": "Brenda",
"husband": {
"age": 30,
"name": "George"
}
}, {
"age": 30,
"name": "Dorothy",
...