Вы можете перебирать записи объекта и проверять, является ли значение другим объектом, а затем перебирать вложенный объект.В противном случае вызовите функцию и обновите свойство.
function update(object, fn) {
Object
.entries(object)
.forEach(([k, v]) => {
if (v && typeof v === 'object') {
update(v, fn);
return;
}
object[k] = fn(v);
});
}
var data = { info: { items: 1, someInteger: 2 }, items: [{ itemId: 3, itemTime: 4 }] };
update(data, v => v + 1);
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }