【问题标题】:Weird representation of Array数组的奇怪表示
【发布时间】:2017-08-08 18:18:33
【问题描述】:

我将一个数组声明为:

list: string[] = [];

我推它:

let infoFile: string = fileReader.result;
      this.list.push(infoFile);

当我使用控制台日志时,我得到了一些奇怪的东西

    []
0
:
"data:image/jpeg;base64,/9j/4AAQSkZJRgA.....
1
:
"data:image/jpeg;base64.....
length
:
2
__proto__
:
Array(0)

为什么我没有得到类似的东西:

[ "str1", "str2", .. ]

当我使用 list[0] 时,我收到未定义的错误。如何使用这些数据?

【问题讨论】:

  • infoFile 不是"str1"。这是一个很长的数据字符串。为什么你期望它是"str1"
  • @recursive 我使用 typeof(infoFile) 并返回字符串
  • 嗯,是的。 "data:image/jpeg;base64,...一个字符串。
  • @recursive 是什么意思我有空数组但长度是 2。我不明白
  • 看起来您只有一个长度为 2 的数组。我不知道您所说的“当我使用 list[0] 时出现未定义的错误”是什么意思。

标签: javascript html arrays angular typescript


【解决方案1】:

你的代码

let infoFile: string = fileReader.result;
this.list.push(infoFile);

认为fileReader.result是一个字符串。在您的情况下,它实际上是一个 ArrayBuffer:https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result

因此你会得到像

这样的项目
"data:image/jpeg;base64,/9j/4AAQSkZJRgA.....
length: 1

代替

"data:image/jpeg;base64,/9j/4AAQSkZJRgA....."

【讨论】:

  • 我将 typeof 用于 infoFile 并返回字符串。我不记得在字符串末尾添加“。InfoFile 是一个很长的字符串,可能字符串有一些限制,这就是我无法读取列表 [i] 的问题。这是一个包含所有示例的问题的链接。
  • 我用那个developer.mozilla.org/en-US/docs/Web/API/FileReader/…。文档说“当时,结果属性包含作为 URL 的数据,将文件数据表示为 base64 编码的字符串。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多