for...in
Думаю, вы захотите использовать рекурсивный цикл для решения этой проблемы.
Что-то вроде этого:
function changeTime (inputObj, newTimeVal) {
var key;
for (key in inputObj) {
if (key === "time") {
inputObj[key] = newTimeVal;
}
if (typeof inputObj[key] === 'object') {
changeTime(inputObj[key], newTimeVal);
}
}
}
Возможно, это не совсем правильно, но это должно привести вас к правильному пути.
edit: Если вы хотите только добавить или вычесть из исходного значения, достаточно просто использовать тот же шаблон:
function changeTime (inputObj, delta) { // we'll always add here-- you can pass in a negative or positive number to account for add or subtract
var key;
for (key in inputObj) {
if (key === "time") {
inputObj[key] = inputObj[key] + delta;
}
if (typeof inputObj[key] === 'object') {
changeTime(inputObj[key], delta);
}
}
}