[英]Convert array of objects with parent / child relationships to array of nested objects
[英]Push child array of objects into parent array
我有一個父數組lines = []
並且在lines.push(data);
包含許多對象lines.push(data);
。 在我的節點應用程序中逐行讀取數據。 每當找到\\
斜杠字符時,我都會拆分每一行。 然后將行更改為對象data = {}
和屬性data.marker; data.value; data.children
data.marker; data.value; data.children
data.marker; data.value; data.children
等。 現在,當找到具有多個\\
斜杠字符的data.children
,我希望data.children
是對象的子數組。 這是split()
之后的行數據
[ 'ft Some older versions read, ',
'fqa And we are writing these things to you so that your joy will be complete. ',
'fqb ',
'f*' ]
這是我的代碼轉換為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);
現在,當我檢查console.log(data.children)
這就是我得到的
[ { marker: 'f*', value: 'f*' }]
而不是我需要的是
[ { 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 = [];
var childArr = [ 'ft Some older versions read, ', 'fqa And we are writing these things to you so that your joy will be complete. ', 'fqb ', 'f*' ]; var data = {}; data.children = []; for (var j = 0; j < childArr.length; j++) { let split = childArr[j].split(" "); data.children.push({ marker: split[0], value: ((split[1] == "" ||split[1] == undefined) ? null : split.slice(1).join(" ")) }); } console.log(data.children);
如果我正確理解您的信息,那么您只是創建一個對象,然后對其進行更新,則需要在object.children中為數組“ childArr”中的每個項目設置1個對象...
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);
}
還是我錯過了什么?
var childArr = [ 'ft Some older versions read, ', 'fqa And we are writing these things to you so that your joy will be complete. ', 'fqb ', 'f*' ]; var data = {}; data.children = []; for (var j=0; j<childArr.length; j++) { var dataArr = childArr[j].split(" "); var obj = {}; obj.marker = dataArr[0]; obj.value = (dataArr.length > 1) ? childArr[j].substr(childArr[j].indexOf(' ')+1) : ""; data.children.push(obj); } console.log(data.children);
試試這個代碼。 它的工作
嘗試使用Array#forEach
遍歷所有數組元素。查找第一個空格的索引以分隔新對象的鍵和值。
var array = [ 'ft Some older versions read, ', 'fqa And we are writing these things to you so that your joy will be complete. ', 'fqb ', 'f*' ]; var finalArray =[] ; array.forEach(function(value,index){ var firstSpace = value.indexOf(' '); if(firstSpace >=0){ var key = value.substr(0,firstSpace); var val = value.substr(firstSpace+1); } else{ var key = value; var val = ''; } var obj = {}; obj.marker = key; obj.value = val; finalArray.push(obj); }); console.log(finalArray);
var childArr = ['ft Some older versions read, ', 'fqa And we are writing these things to you so that your joy will be complete. ', 'fqb ', 'f*' ], data = { children: [] }; for (var j = 0; j < childArr.length; j++) { let split = childArr[j].split(" "); data.children.push({ marker: split[0], value: split.slice(1, -1).join(" ") }); } console.log(data.children);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.