簡體   English   中英

將對象的子數組推入父數組

[英]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); 

試試這個代碼。 它的工作

否則,您可以JS小提琴

嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM