我正在解析具有已知重复结构的文档。有一个标题(1行),一个子标题(1行)和一个内容区域(未知行数)。 文档中每个项目的格式如下所示:
========================= Head Text ========================= SubHead Text ========================= Content Text Line 1 Content Text Line 2 ... Content Text Line 8
我想创建一个包含每个部分的Object的Array。 类似的东西:
var item = [];
items[0] = {
head: "head1 text",
subHead: "subHead1 text",
content: "content1 text"};
items[1] = {
head: "head2 text",
subHead: "subHead2 text",
content: "content2 text"};
我无法有效地遍历文档并动态地将每个Object添加到Array中。我在第2节中得到一个错误,告诉我“页面为空或不是对象”。
var count = 0;
while( !stream.AtEndOfStream ){
page[count] = stream.ReadLine();
count++;
}
var item = [{}];
var section = 0;
var i = 0, k = 0;
while (i < page.length) {
if (~page[i].indexOf("=====")) {
if(section == 0) {
item[k].head = page[i+1];
section++;
} else
if (section == 1) {
item[k].subHead1 = page[i+1];
section++;
i++;
} else
if (section == 2) {
var j = i+1;
while(!~page[j].indexOf("=====")) {
item[k].content += page[j] + "\n";
j++;
}
section = 0;
k++;
}
}
i++;
}
答案 0 :(得分:0)
改变这个:
var item = [{}];
到此:
var item = [];
接下来,改变一下:
if (~page[i].indexOf("=====")) {
到此:
if (~page[i].indexOf("=====")) {
item[k] = {};
我不确定这是否有效,但基本思路是创建一个空数组(var item = [];),然后在需要时添加对象(item [k] = {})。以前,您尝试向未定义的对象添加属性。
答案 1 :(得分:0)
page
为空,因为它至少在您的代码段中尚未声明。