代码之家  ›  专栏  ›  技术社区  ›  Simon

数组包含元素,但长度为0

  •  0
  • Simon  · 技术社区  · 7 年前

    我使用一个数组,其中包含单独的数组和推送对象。

    我的推力看起来像:

    this.storeFilesService.base64files.filetype1.push({name: file.name, base64: str});
    

    将一个对象推入子数组后,我将该数组记录到控制台。 控制台日志

    (this.storeFilesService.base64files.filetype1);
    

    控制台输出为:

    []
    |-> 0: {name: "filename.pdf", base64: "JVBERi"}
    

    但当我将数组的长度记录到控制台时,输出为0。

    console.log(this.storeFilesService.base64files.filytype1.length);  -> 0
    

    我试图检查子数组是否包含对象,但IF子句似乎失败了,原因是长度。

    obace代码是在angular oninit/constructor方法中设置的。 在此之前,我在ondestroy方法中的最后一个组件中执行异步承诺。我认为当我达到上面的代码时,所有的承诺都应该被解决了。

    为什么会有这种行为?

    更新: 尝试了json控制台日志

    console.log('Array : ', this.storeFilesService.base64files.filytype1, JSON.stringify(this.storeFilesService.base64files.filytype1));
    

    json->[] 对象->同上,包含该对象。

    这怎么可能呢?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Simon    7 年前

    似乎与Chrome的现场控制台相关。即使在已经打印之后,该值也被Chrome在控制台中更新。