【发布时间】:2018-01-25 05:45:31
【问题描述】:
我在 Javascript 中使用 FileReader 来创建一个包含数据的对象。该文件本身是一个文本文件,并且该函数被配置为创建一个属性,该属性具有文件某个部分下的所有数据,该部分以括号单词开头并由换行符“\n”分割,例如:
[章节]
data, data, data
data2, data2, data2
变成:
myObject['chapter'] = ['data, data, data', 'data2, data2, data2'];
但是当我使用 Chrome 控制台(或使用 console.log)来访问 myObject['chapter'] 时,它返回未定义。使用控制台查看属性,显示该对象确实有属性,但是带了双引号?
弄乱控制台进一步揭示了这个“章节”与其他所有章节不同。例子:
myObject['chapter'] = 2
//this creates a new property 'chapter', while "chapter" also exists.
Object.keys(myObject)[0] == 'chapter';
//evaluates to false
编辑:拼写
function drophandle(e) {
let reader = new FileReader();
let data = e.dataTransfer.files[0];
reader.onload = function (event) {
let yet = event.target.result.toString();
let full_arr = yet.split('\n');
let index = 'file-f'
items[index] = [];
for (let line of full_arr) {
if (line.indexOf('[') != -1) {
index = line.replace(/"/g, "").replace(/\[/g, "").replace(/\]/g, "").toLowerCase();
items[index] = [];
continue;
};
items[index].push(line);
}
console.log(items['general'])
for (let t in items) {
for (let y of items[t]) {
append(y)
}
}
}
reader.readAsText(data, 'utf-8');
}
【问题讨论】:
-
您的问题是什么?请粘贴您的代码(重现该问题的最小示例)。我怀疑这是一个简单/双引号的问题。可能是您没有从文件中获得您期望的密钥(例如,“\n”可能在密钥中)。也可能是
console.log在 chrome 中不同步,并且当 chrome 决定记录它时myObject已更改。 -
您注意到了吗:
Object.keys(MyObject)[0]以大写字母开头? ... -
抱歉,这是一个错字而不是错误。该代码应该类似于我正在编写的代码。
标签: javascript filereader