- 此 问题 在 此处 已有 答案 * * :
Is Chrome’s JavaScript console lazy about evaluating objects? ( 7 个 答案 )
How do I return the response from an asynchronous call? ( 44 个 答案 )
2 天 前 关闭 。
我 在 Python 中 创建 了 随机 数 数组 , 并 通过 . txt 文件 在 Javascript 中 读取 它们 。 读取 文件 的 最终 结果 是 一 个 三维 数组 , 每当 我 记录 这个 数组 时 , 我 都会 得到 预期 的 结果 , 但 如果 我 试图 索引 它 , 则 会 返回 undefined 。
document.getElementById('inputfile').addEventListener('change',
function (){
var c_file_=[]
var fr=[];
var blocks=[];
for(x=0;x<this.files.length;x++){
fr.push(new FileReader());
const f=x;
fr[f].readAsText(this.files[f])
fr[f].onloadend=function(){
file=(fr[f].result)
if(file==null){
console.log('read_fail')
c_file_.push(file_[f-1])
}else{
blocks=file.split("\n")
string=[]
for(b=0;b<blocks.length;b++){
string.push(blocks[b].split("], ["))
string[b][0]=string[b][0].replaceAll('[[',"")
string[b][string[b].length-1]=string[b][string[b].length-1].replaceAll(']]',"")
}
values=[]
for(i=0;i<string.length;i++){
values.push([])
for(n=0;n<string[i].length;n++){
values[i].push(parseFloat(string[i][n]))
}
}
c_file_.push(values);
}
}
}
console.log(c_file_)
})
中 的 每 一 个
如果 我 记录 整个 数组 , 则 会 记录 以下 内容 :
x1月 1 日
但是 如果 我 记录 c_file_[0]
, 我 得到 的 是 未 定义 的 。
我 尝试 过 使用 spread 来 Map 数组 , 在 赋值 之前 Map 数组 , 以及 各种 克隆 方法 来 避免 内存 泄漏 。 但是 没有 任何 方法 允许 我 访问 最终 数组 的 值 。 我 是 javascript 新手 , 所以 我 可能 错过 了 一些 明显 的 东西 , 但是 我 无法 理解 它 对 似乎 已 定义 的 东西 返回 undefined 。
1条答案
按热度按时间2cmtqfgy1#
浏览器中对象的Console.log通常显示对象在开发者控制台中展开时的内容,* 而不是在JavaScript中登录时的属性和值 *。换句话说,
console.log(object)
不会复制object
的快照。但是,如果您在读取所有文件后才展开控制台输出,您将看到从文件生成的值。另一方面,
console.log(undefined)
会立即在控制台上记录“undefined”。在发布的代码中,
c_file_
在读取完文件后,在loadend
事件处理程序中异步推送了一些项。但是,发布中的console.log
行在读取任何文件之前被同步调用。因此,如果在同一位置记录c_file_[0]
的值,预期会看到undefined
,因为c_file_
数组仍为空。