Javascript 将对象的子数组推入父数组

Javascript 将对象的子数组推入父数组,javascript,arrays,loops,Javascript,Arrays,Loops,我有一个父数组lines=[],在行中包含许多对象。在我的节点应用程序中逐行读取数据。 每当找到斜杠字符时,我就会分割每一行。然后将行更改为Objectsdata={}和propertiesdata.marker;数据价值;数据。儿童等等。现在,当发现一行有几个斜杠字符时,我想让data.children成为对象的子数组。 这是split()之后的行数据 这是我要转换成data.children数组的代码 data.children = []; //object for chil

我有一个父数组
lines=[]
,在
行中包含许多对象。在我的节点应用程序中逐行读取数据。
每当找到斜杠字符时,我就会分割每一行。然后将行更改为Objects
data={}
和properties
data.marker;数据价值;数据。儿童
等等。现在,当发现一行有几个斜杠字符时,我想让data.children成为对象的子数组。 这是
split()之后的行数据

这是我要转换成
data.children
数组的代码

    data.children = [];
    //object for child
    var obj = {};
    for (var j=0; j<childArr.length; j++) {
        obj.marker = childArr[j].split(" ")[0] ;
        obj.value = childArr[j].substr(childArr[j].indexOf(' ')+1) ;                           
    }
    data.children.push(obj);
而不是我需要的是

    [ { marker: 'ft' , value: 'Some older versions read,' },
      { marker: 'fqa', value: 'And we are writing these things to you so that your joy will be complete.' },
      { marker: 'fqb', value: 'null' },
      { marker: 'f*', value: 'null' },]

我确信当我将数据推送到子数组时会有一些麻烦。任何帮助都将不胜感激!提前感谢。

如果我理解正确,您只创建了一个对象,然后对其进行更新,而您需要在object.children中为数组“childArr”中的每个项目创建一个对象

data.children=[];
//儿童用品
var obj={};
对于(var j=0;j
var childArr=['ft一些旧版本读取,',
“fqa,我们将这些东西写给你,这样你的快乐就会完全。”,
“fqb”,
“f*”];
变量数据={};
data.children=[];
对于(var j=0;j 1)?childArr[j]。substr(childArr[j]。indexOf(“”)+1:“”;
数据。儿童。推送(obj);
}
console.log(data.children);
尝试使用迭代所有数组元素。找到第一个空格的索引以分隔新对象的键和值

var-array=['ft一些旧版本读取,',
“fqa,我们将这些东西写给你,这样你的快乐就会完全。”,
“fqb”,
“f*”];
var finalArray=[];
forEach(函数(值、索引){
var firstSpace=value.indexOf(“”);
如果(第一空间>=0){
var key=value.substr(0,第一个空格);
var val=value.substr(第一空间+1);
}
否则{
var键=值;
var-val='';
}
var obj={};
obj.marker=键;
obj.value=val;
最终推送(obj);
});
console.log(finalArray);
var childArr=['ft一些旧版本读取,',
“fqa,我们将这些东西写给你,这样你的快乐就会完全。”,
“fqb”,
“f*”
],
数据={
儿童:[]
};
对于(var j=0;jconsole.log(data.children);
这是我需要的正确答案。很抱歉最近发布了它,并感谢您的所有努力。谢谢

data.children = [];
var childArr=['ft一些旧版本读取,',
“fqa,我们将这些东西写给你,这样你的快乐就会完全。”,
“fqb”,
“f*”];
变量数据={};
data.children=[];
对于(var j=0;jconsole.log(data.children);
这是因为您在循环后推送;在for循环中添加推送抱歉,但我尝试在循环中推送子数组,然后我也得到了与
{marker:'f*',value:'f*}相同的结果
您正在更改
obj
的属性……但每次推送时都是一样的
obj
。@War的答案是90%正确……有两个
=
应该是
您错过了javascript对象文字语法101:pthere-you-go(还有,松开={}在循环外,在循环内的var,你是金色的:p@War我尝试了你的建议,但得到了
语法错误:无效的速记属性初始值设定项
我尝试了这个,但在阅读文件时给了我
错误。
@zachi添加了JS fiddle链接。检查这里。但是一句话,最后一个对象是这样的`{标记:'',值:'f*'}`我知道要修复它。请尝试编辑答案。只需设置
if/else
条件以检查空格。
    [ { marker: 'ft' , value: 'Some older versions read,' },
      { marker: 'fqa', value: 'And we are writing these things to you so that your joy will be complete.' },
      { marker: 'fqb', value: 'null' },
      { marker: 'f*', value: 'null' },]
data.children = [];
//object for child
var obj = {};
for (var j=0; j<childArr.length; j++) {
    var obj = {
        marker: childArr[j].split(" ")[0],
        value: childArr[j].substr(childArr[j].indexOf(' ')+1) 
    };
    data.children.push(obj);                  
}
data.children = [];