I have a JSON array with properties like id and parentActivityId.
$scope.data = [ { id: 1, activityName: "Drilling", parentActivityId: 0, items: [ { id: 2, activityName: "Blasting", parentActivityId: 1, items: [ { id: 3, activityName: "Ann", parentActivityId: 2, items: [], }, { id: 4, activityName: "Ann", parentActivityId: 2, items: [], } ] }, { id: 5, activityName: "Transport", parentActivityId: 1, items: [ { id: 6, activityName: "Daniel", parentActivityId: 5, items: [], } ] } ] } ];
I would like to push a new element based on parentActiityId . The new item will have a new id . Example. If my object looks like this:
{ id: 7, activityName: "Drilling", parentActivityId: 1, items: [] }
then my object will look like this.
$scope.data = [ { id: 1, activityName: "Drilling", parentActivityId: 0, items: [ { id: 2, activityName: "Blasting", parentActivityId: 1, items: [ { id: 3, activityName: "Ann", parentActivityId: 2, items: [], }, { id: 4, activityName: "Ann", parentActivityId: 2, items: [], }, { id: 7, activityName: "Drilling", parentActivityId: 2, items: [], } ] }, { id: 5, activityName: "Transport", parentActivityId: 1, items: [ { id: 6, activityName: "Daniel", parentActivityId: 5, items: [], } ] } ] } ];
I tried to give this for a loop.
var arrObj = { id: 7, activityName: "Drilling", parentActivityId: 1, items: [] }; function populateObj(arrObj) { for (var i = 0; i < $scope.data.length; i++) { if ($scope.data[i].id == arrObj.parentActivityId) { $scope.data.push(arrObj); } } }; populateObj(arrObj);
which will only point to the parent. I also want to identify the child in a for loop and click on a specific array object by specifying thr parentActivityId. Any help would be really appreciated.