我在下面的堆栈闪电中有一个对象,我想检查键是否为日期。然后我要增加3天的日期。我为此做的不是完美的递归对象。但是,当对象是递归时,我无法做到这一点。我该如何实现? 性能对我来说很重要,因为在我的现实生活中,我的对象非常大且复杂。
myObject = {
aProperty: {
aSetting1: 1,
aSetting2: new Date(),
aSetting3: 3,
aSetting4: 4,
aSetting5: 5
},
bProperty: {
bSetting1: {
bPropertySubSetting: new Date()
},
bSetting2: "bString"
},
cProperty: {
cSetting: new Date()
},
dProperty: new Date()
}
convertButtonClick() {
this.convert(this.myObject);
console.log(this.myObject);
}
convert(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (obj[property] instanceof Date) {
obj[property].setDate(obj[property].getDate() + 3);
}
}
}
}
答案 0 :(得分:3)
当发现其中一个属性是对象时,可以递归调用convert
:
convert(obj) {
for (let property in obj) {
if (obj.hasOwnProperty(property)) {
if (obj[property] instanceof Date) {
obj[property].setDate(obj[property].getDate() + 3);
} else if (obj[property] instanceof Object) {
this.convert(obj[property]); // Recursive call
}
}
}
}
有关演示,请参见this stackblitz。