检查角度为7的递归对象的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查角度为7的递归对象的属性相关的知识,希望对你有一定的参考价值。
我有一个像stackblitz下面的对象,我想检查密钥是否为Date。然后我在那个日期增加了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);
}
}
}
}
答案
当您发现其中一个属性是对象时,可以递归调用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。
以上是关于检查角度为7的递归对象的属性的主要内容,如果未能解决你的问题,请参考以下文章