Skip to content

Instantly share code, notes, and snippets.

@oyilmaztekin
Last active November 21, 2018 14:55
Show Gist options
  • Select an option

  • Save oyilmaztekin/d3394fb77cbc97a5b6d43d092895e6d9 to your computer and use it in GitHub Desktop.

Select an option

Save oyilmaztekin/d3394fb77cbc97a5b6d43d092895e6d9 to your computer and use it in GitHub Desktop.
const DataSetTree = [ { "ID": 2, "Phone": "(979) 486-1932", "City": "Chełm", "Name": "Scarlet", "children": [ { "ID": 30, "parentID": 2, "Phone": "(641) 756-7073", "City": "Harrison Hot Springs", "Name": "Hamilton", "children": [ { "ID": 54, "parentID": 30, "Phone": "(800) 876-5942", "City": "Ribnitz-Damgarten", "Name": "Kelsie", "children": [ { "ID": 62, "parentID": 54, "Phone": "(523) 159-2911", "City": "Biała Podlaska", "Name": "Clio", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 87, "parentID": 30, "Phone": "(500) 895-9220", "City": "Piracicaba", "Name": "Maya", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 40, "parentID": 2, "Phone": "(921) 336-7339", "City": "Namur", "Name": "Lionel", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 3, "Phone": "(573) 685-8350", "City": "Wardha", "Name": "Adria", "children": [ { "ID": 4, "parentID": 3, "Phone": "(630) 292-9737", "City": "Villers-la-Loue", "Name": "Xerxes", "children": [ { "ID": 44, "parentID": 4, "Phone": "(287) 866-8953", "City": "Fiuminata", "Name": "Darius", "children": [ { "ID": 47, "parentID": 44, "Phone": "(779) 411-0381", "City": "Pontedera", "Name": "Harding", "children": [ { "ID": 92, "parentID": 47, "Phone": "(925) 263-0254", "City": "Curacaví", "Name": "Aristotle", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 56, "parentID": 4, "Phone": "(963) 719-2718", "City": "Gore", "Name": "Rafael", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 58, "parentID": 3, "Phone": "(464) 318-7548", "City": "Curepto", "Name": "Leila", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 5, "Phone": "(755) 968-6539", "City": "Gönen", "Name": "Madeson", "children": [ { "ID": 6, "parentID": 5, "Phone": "(644) 892-5485", "City": "Timkur", "Name": "Rae", "children": [ { "ID": 14, "parentID": 6, "Phone": "(724) 797-0077", "City": "Portree", "Name": "Elmo", "children": [ { "ID": 18, "parentID": 14, "Phone": "(938) 793-5446", "City": "Eugene", "Name": "Dahlia", "children": [ { "ID": 48, "parentID": 18, "Phone": "(393) 562-0884", "City": "Widooie", "Name": "Marny", "children": [], "collapse": false, "child": true }, { "ID": 59, "parentID": 18, "Phone": "(578) 378-1196", "City": "Patna", "Name": "Aurelia", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 45, "parentID": 14, "Phone": "(329) 372-0345", "City": "Laurencekirk", "Name": "Kelsey", "children": [], "collapse": false, "child": true }, { "ID": 95, "parentID": 14, "Phone": "(821) 339-0288", "City": "Rastatt", "Name": "Clayton", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 8, "parentID": 5, "Phone": "(168) 452-3538", "City": "Worksop", "Name": "Rowan", "children": [ { "ID": 12, "parentID": 8, "Phone": "(712) 483-3905", "City": "Courbevoie", "Name": "Craig", "children": [ { "ID": 20, "parentID": 12, "Phone": "(351) 187-8200", "City": "Garaguso", "Name": "Trevor", "children": [ { "ID": 22, "parentID": 20, "Phone": "(479) 532-6127", "City": "Salt Lake City", "Name": "Fleur", "children": [ { "ID": 67, "parentID": 22, "Phone": "(871) 569-3871", "City": "Diyarbakır", "Name": "Abra", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 29, "parentID": 20, "Phone": "(268) 646-0066", "City": "Palermo", "Name": "Eagan", "children": [ { "ID": 76, "parentID": 29, "Phone": "(910) 639-7203", "City": "Prè-Saint-Didier", "Name": "Mohammad", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 32, "parentID": 12, "Phone": "(915) 642-4154", "City": "Bihain", "Name": "Noel", "children": [], "collapse": false, "child": true }, { "ID": 46, "parentID": 12, "Phone": "(566) 705-6690", "City": "Lunel", "Name": "Skyler", "children": [ { "ID": 57, "parentID": 46, "Phone": "(453) 654-2849", "City": "Llanelli", "Name": "Carson", "children": [], "collapse": false, "child": true }, { "ID": 89, "parentID": 46, "Phone": "(391) 696-7431", "City": "São Gonçalo", "Name": "Simon", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 13, "parentID": 8, "Phone": "(872) 499-5833", "City": "Cuccaro Vetere", "Name": "Basia", "children": [], "collapse": false, "child": true }, { "ID": 42, "parentID": 8, "Phone": "(308) 835-2758", "City": "Alto del Carmen", "Name": "Austin", "children": [], "collapse": false, "child": true }, { "ID": 88, "parentID": 8, "Phone": "(642) 297-3447", "City": "Seborga", "Name": "Quentin", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 9, "parentID": 5, "Phone": "(873) 337-9560", "City": "Bad Neuenahr-Ahrweiler", "Name": "Kendall", "children": [ { "ID": 53, "parentID": 9, "Phone": "(298) 734-9439", "City": "La Pintana", "Name": "Wanda", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 15, "parentID": 5, "Phone": "(366) 967-0433", "City": "Dublin", "Name": "Cairo", "children": [], "collapse": false, "child": true }, { "ID": 19, "parentID": 5, "Phone": "(425) 682-2189", "City": "Salisbury", "Name": "Irene", "children": [ { "ID": 23, "parentID": 19, "Phone": "(339) 973-1695", "City": "Meldert", "Name": "Hayley", "children": [ { "ID": 71, "parentID": 23, "Phone": "(808) 719-1689", "City": "Göteborg", "Name": "Wynter", "children": [], "collapse": false, "child": true }, { "ID": 85, "parentID": 23, "Phone": "(843) 182-9656", "City": "Strongoli", "Name": "Latifah", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 83, "parentID": 19, "Phone": "(772) 321-1060", "City": "Waret-l'Evque", "Name": "Melanie", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false }, { "ID": 7, "Phone": "(896) 297-6568", "City": "Louvain-la-Neuve", "Name": "Celeste", "children": [ { "ID": 26, "parentID": 7, "Phone": "(898) 476-0059", "City": "Burntisland", "Name": "Rigel", "children": [ { "ID": 31, "parentID": 26, "Phone": "(820) 709-1328", "City": "Ottignies", "Name": "Liberty", "children": [ { "ID": 34, "parentID": 31, "Phone": "(594) 856-4377", "City": "Buin", "Name": "Murphy", "children": [], "collapse": false, "child": true }, { "ID": 64, "parentID": 31, "Phone": "(444) 946-5781", "City": "Sala Baganza", "Name": "Roanna", "children": [ { "ID": 86, "parentID": 64, "Phone": "(341) 123-1359", "City": "Laakirchen", "Name": "Dacey", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 73, "parentID": 26, "Phone": "(278) 977-1716", "City": "Tiel", "Name": "Irene", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false }, { "ID": 10, "Phone": "(450) 579-0491", "City": "Middelburg", "Name": "Madaline", "children": [ { "ID": 28, "parentID": 10, "Phone": "(486) 637-9167", "City": "San Maurizio Canavese", "Name": "Wang", "children": [ { "ID": 35, "parentID": 28, "Phone": "(951) 871-5461", "City": "Gold Coast", "Name": "Ila", "children": [ { "ID": 50, "parentID": 35, "Phone": "(474) 337-2674", "City": "Hazaribag", "Name": "Lance", "children": [], "collapse": false, "child": true }, { "ID": 51, "parentID": 35, "Phone": "(971) 506-3185", "City": "Gent", "Name": "Orson", "children": [], "collapse": false, "child": true }, { "ID": 55, "parentID": 35, "Phone": "(328) 828-7536", "City": "Opgrimbie", "Name": "Moses", "children": [], "collapse": false, "child": true }, { "ID": 70, "parentID": 35, "Phone": "(436) 244-1024", "City": "Hatfield", "Name": "Marny", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 38, "parentID": 28, "Phone": "(214) 619-7252", "City": "Stargard Szczeciński", "Name": "Adria", "children": [], "collapse": false, "child": true }, { "ID": 41, "parentID": 28, "Phone": "(386) 567-5819", "City": "Borchtlombeek", "Name": "Erin", "children": [], "collapse": false, "child": true }, { "ID": 49, "parentID": 28, "Phone": "(299) 937-4358", "City": "Zamora", "Name": "Brennan", "children": [ { "ID": 75, "parentID": 49, "Phone": "(829) 494-7378", "City": "Camiña", "Name": "Phyllis", "children": [], "collapse": false, "child": true }, { "ID": 90, "parentID": 49, "Phone": "(280) 896-1049", "City": "Salon-de-Provence", "Name": "Stewart", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 61, "parentID": 28, "Phone": "(120) 369-4537", "City": "Knokke", "Name": "Sacha", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 36, "parentID": 10, "Phone": "(781) 305-7685", "City": "Castel Maggiore", "Name": "Katelyn", "children": [], "collapse": false, "child": true }, { "ID": 37, "parentID": 10, "Phone": "(716) 572-8734", "City": "Chapecó", "Name": "Logan", "children": [], "collapse": false, "child": true }, { "ID": 39, "parentID": 10, "Phone": "(422) 223-5912", "City": "Bad Vöslau", "Name": "Katell", "children": [ { "ID": 65, "parentID": 39, "Phone": "(262) 323-0211", "City": "Bredene", "Name": "Summer", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 91, "parentID": 10, "Phone": "(647) 276-5006", "City": "Follina", "Name": "Thomas", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 11, "Phone": "(111) 162-2502", "City": "Birecik", "Name": "Chandler", "children": [ { "ID": 16, "parentID": 11, "Phone": "(147) 708-7321", "City": "Rivière-du-Loup", "Name": "Mannix", "children": [], "collapse": false, "child": true }, { "ID": 24, "parentID": 11, "Phone": "(946) 766-1649", "City": "Corral", "Name": "Baker", "children": [ { "ID": 52, "parentID": 24, "Phone": "(391) 283-3953", "City": "Leernes", "Name": "Shana", "children": [], "collapse": false, "child": true }, { "ID": 74, "parentID": 24, "Phone": "(853) 349-5161", "City": "Rapagnano", "Name": "Morgan", "children": [], "collapse": false, "child": true }, { "ID": 81, "parentID": 24, "Phone": "(182) 582-5900", "City": "Wilmont", "Name": "Dominic", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true }, { "ID": 93, "parentID": 11, "Phone": "(103) 458-0127", "City": "Ely", "Name": "Mason", "children": [], "collapse": false, "child": true }, { "ID": 94, "parentID": 11, "Phone": "(112) 941-0810", "City": "Lebu", "Name": "Lamar", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 17, "Phone": "(407) 519-9894", "City": "Roubaix", "Name": "Justine", "children": [ { "ID": 66, "parentID": 17, "Phone": "(694) 404-3275", "City": "Belfort", "Name": "Amery", "children": [ { "ID": 96, "parentID": 66, "Phone": "(788) 644-3560", "City": "Cannole", "Name": "Jessica", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false }, { "ID": 21, "Phone": "(601) 944-5214", "City": "Pointe-au-Pic", "Name": "Iris", "children": [ { "ID": 27, "parentID": 21, "Phone": "(163) 267-0914", "City": "Lac Ste. Anne", "Name": "Scarlett", "children": [ { "ID": 33, "parentID": 27, "Phone": "(137) 830-3127", "City": "Kapuskasing", "Name": "Aidan", "children": [ { "ID": 43, "parentID": 33, "Phone": "(410) 695-8540", "City": "Saint-Laurent", "Name": "Deanna", "children": [ { "ID": 63, "parentID": 43, "Phone": "(475) 190-5102", "City": "Nicoya", "Name": "Nola", "children": [], "collapse": false, "child": true }, { "ID": 98, "parentID": 43, "Phone": "(268) 572-5059", "City": "San Marcello Pistoiese", "Name": "Marny", "children": [], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false, "child": true } ], "collapse": false }, { "ID": 25, "Phone": "(964) 413-7033", "City": "Joliet", "Name": "Leo", "children": [ { "ID": 79, "parentID": 25, "Phone": "(639) 100-6302", "City": "Montemesola", "Name": "Cara", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 60, "Phone": "(397) 265-7757", "City": "Ahmadpur East", "Name": "Zelenia", "children": [], "collapse": false }, { "ID": 68, "Phone": "(807) 949-9083", "City": "Villers-la-Bonne-Eau", "Name": "Wyatt", "children": [], "collapse": false }, { "ID": 69, "Phone": "(515) 371-8783", "City": "Poggiodomo", "Name": "Aidan", "children": [], "collapse": false }, { "ID": 72, "Phone": "(134) 258-4612", "City": "Kukatpalle", "Name": "Morgan", "children": [ { "ID": 82, "parentID": 72, "Phone": "(770) 741-5391", "City": "San Giuliano di Puglia", "Name": "Burke", "children": [], "collapse": false, "child": true } ], "collapse": false }, { "ID": 77, "Phone": "(430) 230-5837", "City": "Bregenz", "Name": "Ethan", "children": [], "collapse": false }, { "ID": 78, "Phone": "(953) 595-4023", "City": "Shahjahanpur", "Name": "Madeline", "children": [], "collapse": false }, { "ID": 80, "Phone": "(546) 698-1207", "City": "Arnhem", "Name": "Quinlan", "children": [], "collapse": false }, { "ID": 84, "Phone": "(861) 753-8646", "City": "Wolfsburg", "Name": "Upton", "children": [], "collapse": false }, { "ID": 97, "Phone": "(636) 383-2370", "City": "St. Catharines", "Name": "Maxwell", "children": [], "collapse": false }, { "ID": 99, "Phone": "(336) 239-7842", "City": "Goderich", "Name": "Byron", "children": [], "collapse": false }, { "ID": 100, "Phone": "(714) 477-8291", "City": "St. Ives", "Name": "Bryar", "children": [], "collapse": false } ]
const allNodes = []
function traverseJSON(tree, nested, prop, value){
for(let i in tree){
if(!prop || !value || !nested){
allNodes.push("missing parameters")
break
}
if(tree[i][prop] === value) {
allNodes.push(tree[i])
}
else if(typeof tree[i] !== "string" && tree[i].length){
traverseJSON(tree[i], nested, prop, value)
}
//for parsed ast files. https://github.com/vtrushin/json-to-ast
else if(tree[i].value && tree[i].value.hasOwnProperty(nested) ){
traverseJSON(tree[i].value[nested], nested, prop, value)
}
else if(tree[i][nested]){
traverseJSON(tree[i][nested], nested, prop, value)
}
}
return allNodes
}
traverseJSON(DataSetTree, "children", "parentID", 8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment