<button class="btn btn-success" onclick="editNested(itemsData, 'id', 4); updateResult();">Edit id=4</button>

<button class="btn btn-danger" onclick="deleteNested(itemsData, 'id', 5); updateResult();">Delete id=5</button>

<hr/>
<pre>
<p id="result"></p>
</pre>

body {
  margin: 20px;
}
let itemsData = [
    {
        "id": 0,
        "text": "item1",
        "children": []
    },
    {
        "id": 1,
        "text": "item2",
        "children": [
            {
                "id": 2,
                "text": "item2-1",
                "children": []
            },
            {
                "id": 5,
                "text": "item2-2",
                "children": [
                    {
                        "id": 112,
                        "text": "item2-2-1",
                        "pageId": "4",
                        "children": []
                    }
                ]
            },
            {
                "id": 4,
                "text": "item2-3",
                "children": []
            }
        ]
    },
    {
        "id": 3,
        "text": "item3",
        "children": []
    }
] 

updateResult();

function updateResult() {
  $("#result").html(JSON.stringify(itemsData, 0, 4));
}

// Удаляем объект по значению ключа
function deleteNested(arr, key, val) {
  for (let i = arr.length; i--; ) {
    if (arr[i][key] === val) {
      arr.splice(i, 1);
    } else if (Array.isArray(arr[i].children)) {
      deleteNested(arr[i].children, key, val);
    }
  }
}

// Ищем объект по значению ключа и изменяем его
function editNested(arr, key, val) {
  
  	let updateEditItem = {
      	id: val,
        text: 'Новый текст, обновили',       
      };
  
  // Это пример грубо говоря
    if(
      itemsData[1]['children'][2] && 
      itemsData[1]['children'][2][key] == val
  ) {
    // непонятно как вычислить родительские индексы
      itemsData[1]['children'][2] = updateEditItem;
    }
  
  
}

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js