簡體   English   中英

推一個 object 多維數組 object javascript

[英]Push an object multidimension array object javascript

請幫我。 當我想將 object 推入現有陣列 object 時,我遇到了問題。 請告訴我是否有類似的問題。

這是我的代碼:

var menu = [{
  "id": 1,
  "text": "menu 1",
  "parent": "-",
  "child": {}
},
{
  "id": 3,
  "text": "menu 3",
  "parent": "-",
  "child": {}
}];

var menuchild = [{
  "id": 2,
  "parent": 1,
  "text": "menu 2"
},
{
  "id": 5,
  "parent": 3,
  "text": "menu 5"
},
{
  "id": 6,
  "parent": 1,
  "text": "menu 6"
}];

$.each(menuchild, function(key, value) {

  let item = {
    'id': value.id,
    'text': value.text,
    'parent': value.parent
  }

let parentindex = menu.findIndex(el => el.id === value.parent);

// if i use this return error push is not a function
menu[parentindex]['child'].push(item) 

// if i use this the data wil be replace if there is 2 object with same parent
menu[parentindex]['child'] = item

})

請告訴我推送數據的最佳方式是什么?

如果您希望menuchild項是object ,那么下面就是方法。

 var menu = [ { id: 1, text: 'menu 1', parent: '-', child: {}, }, { id: 3, text: 'menu 3', parent: '-', child: {}, }, ]; var menuchild = [ { id: 2, parent: 1, text: 'menu 2', }, { id: 5, parent: 3, text: 'menu 5', }, { id: 6, parent: 1, text: 'menu 6', }, ]; let updatedParents = menuchild.map(ch => { childParent = menu.find(m => m.id === ch.parent) return {...childParent, child: {...ch} } }); console.log(updatedParents)
 .as-console-wrapper{ max-height: 100%;important; }

但是,如果希望menu數組的child元素是array ,那么下面是實現您正在尋找的 output 的方法。

 var menu = [{ id: 1, text: 'menu 1', parent: '-', child: [], }, { id: 3, text: 'menu 3', parent: '-', child: [], }, ]; var menuchild = [{ id: 2, parent: 1, text: 'menu 2', }, { id: 5, parent: 3, text: 'menu 5', }, { id: 6, parent: 1, text: 'menu 6', }, ]; const finalResult = menuchild.reduce((result, ch) => { let index = result.findIndex(r => r.id === ch.parent); result[index].child.push(ch); return result; }, [...menu]) console.log(finalResult)
 .as-console-wrapper{ max-height: 100%;important; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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