繁体   English   中英

使用Java语言中的文字表示法将对象插入数组

[英]Insert an Object into an Array using Literal Notation in Javascript

我正在解析具有已知重复结构的文档。 有一个标题(1行),一个子标题(1行)和一个内容区域(行数未知)。 文档中每个项目的格式如下所示:

=========================
       Head Text
=========================
      SubHead Text
=========================
 Content Text Line 1
 Content Text Line 2
 ...
 Content Text Line 8

我想创建一个包含每个部分的对象的数组。 就像是:

 var item = [];

 items[0] = {
     head: "head1 text",
     subHead: "subHead1 text",
     content: "content1 text"};
 items[1] = {
     head: "head2 text",
     subHead: "subHead2 text",
     content: "content2 text"};

我在高效遍历文档并将每个对象动态添加到数组中时遇到麻烦。 我在第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++;
}

更改此:

var item = [{}]; 

对此:

var item = []; 

接下来,更改此:

if (~page[i].indexOf("=====")) {  

对此:

if (~page[i].indexOf("=====")) { 
    item[k] = {};

我不确定这是否行得通,但是基本思想是创建一个空白数组(var item = [];),然后在需要时添加对象(item [k] = {})。 以前,您试图将属性添加到未定义的对象。

page为null,因为至少在您的代码段中尚未声明它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM