const array = [{ "basedOnET": 524, "currentTrigger": "", "triggerName": "Trigger_1", children: [] }, { "basedOnET": 524, "currentTrigger": "", "triggerName": "Trigger_2", children: [] }, { "basedOnET": "Trigger", "currentTrigger": "Trigger_2", "triggerName": "Trigger_3", children: [] }, { "basedOnET": "Trigger", "currentTrigger": "Trigger_3", "triggerName": "Trigger_4", children: [] }, { "basedOnET": 524, "currentTrigger": "", "triggerName": "Trigger_5", children: [] }, { "basedOnET": "Trigger", "currentTrigger": "Trigger_5", "triggerName": "Trigger_6", children: [] }, { "basedOnET": 524, "currentTrigger": "", "triggerName": "Trigger_7", children: [] } ]; let data = []; data.push(array[0]); const findElement = (element, matchWith, value) => { // console.log("matchWith", element.currentTrigger, matchWith); if ( element.triggerName === matchWith ) { return element.children.push(value); } // return true; else if (element.children.length) { let result = false; for (let i = 0; !result && i < element.children.length; i++) { findElement(element.children[i], matchWith, value); } // return true; } }; for (let i = 1; i < array.length; i++) { if (array[i].currentTrigger) { findElement(data[0], array[i].currentTrigger,array[i]); // console.log(data[0].triggerName,array[i].currentTrigger) } else { // console.log("\nNo Trigger Type",data[0].triggerName,array[i].currentTrigger,'\n') data[0].children.push(array[i]); } } console.log(JSON.stringify(data))