Javascript 将对象的子数组推入父数组
我有一个父数组Javascript 将对象的子数组推入父数组,javascript,arrays,loops,Javascript,Arrays,Loops,我有一个父数组lines=[],在行中包含许多对象。在我的节点应用程序中逐行读取数据。 每当找到斜杠字符时,我就会分割每一行。然后将行更改为Objectsdata={}和propertiesdata.marker;数据价值;数据。儿童等等。现在,当发现一行有几个斜杠字符时,我想让data.children成为对象的子数组。 这是split()之后的行数据 这是我要转换成data.children数组的代码 data.children = []; //object for chil
lines=[]
,在行中包含许多对象代码>。在我的节点应用程序中逐行读取数据。
每当找到斜杠字符时,我就会分割每一行。然后将行更改为Objectsdata={}
和propertiesdata.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;j console.log(data.children);
这是我需要的正确答案。很抱歉最近发布了它,并感谢您的所有努力。谢谢
data.children = [];
var childArr=['ft一些旧版本读取,',
“fqa,我们将这些东西写给你,这样你的快乐就会完全。”,
“fqb”,
“f*”];
变量数据={};
data.children=[];
对于(var j=0;j console.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 = [];