检查角度为7的递归对象的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查角度为7的递归对象的属性相关的知识,希望对你有一定的参考价值。

我有一个像stackblitz下面的对象,我想检查密钥是否为Date。然后我在那个日期增加了3天。我正在做这件事,因为没有完美的递归对象。但是,当对象递归时,我无法做到这一点。我怎样才能做到这一点?性能对我来说很重要,因为在我的现实生活场景中,我的对象非常庞大和复杂。

Stackblitz

  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的递归对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

html画布检查对象是不是成角度

js代码片段

如何根据角度 7 中的某些值默认检查特定复选框

如何使用角度 7 从对象数组中返回 userPass 的值?

web代码片段

`==` 是不是在 Julia 中递归检查结构?好像没有