Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查angular 7中递归对象的属性_Angular_Typescript_Angular7 - Fatal编程技术网

检查angular 7中递归对象的属性

检查angular 7中递归对象的属性,angular,typescript,angular7,Angular,Typescript,Angular7,我有一个像下面stackblitz这样的对象,我想检查一下键是否是Date。然后我再加上3天。我这样做是为了不完全递归对象。但是,当对象是递归的时,我不能这样做。我怎样才能做到这一点性能对我来说很重要,因为在我的现实生活场景中,我的对象非常大和复杂。 当发现某个属性是对象时,可以递归调用convert: convert(obj) { for (let property in obj) { if (obj.hasOwnProperty(property)) { if (o

我有一个像下面stackblitz这样的对象,我想检查一下键是否是Date。然后我再加上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
      }
    }
  }
}

请参见演示。

您必须遍历整个对象,为此您需要使用递归。或者使用BFS,DFS traversalI尝试了递归,但是,我没有实现@AmitIf如果你的幸运是基于一些领域知识,那么你可以加快这个过程。e、 g从深度/级别3开始,就不会有更多的日期了。或者,例如,在1级中,约会次数永远不会超过x次。谢谢@jcuypers和Amit。ConnorsFan的答案正是我想要的。非常感谢@ConnorsFan。这就是我要找的。
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
      }
    }
  }
}