簡體   English   中英

在JavaScript中建立一對多關系數組

[英]Making one to many relation array in JavaScript

我有兩個對象數組:

var a = [{
  "id": 1,
  "name": "q"
},
{
  "id": 2,
  "name": "l"
}]

另一個是

var b = [{
  "id": 3,
  "sub": 1,
  "name": "ni"
},
{
  "id": 4,
  "sub": 2,
  "name": "bh"
}]

下面子是id在a

我需要一個新的數組,如下所示:

var c = [
  {
    "id":1,
    "name":"q",
    "map":[
      {
        "id":3,
        "name":"ni"
      }
    ]
  },
  {
    "id":2,
    "name":"l",
    "map":[
      {
        "id":4,
        "name":"bh"
      }
    ]
  }
]

如何在JavaScript中做到這一點?

我在項目中使用下划線。

在純Javascript中,您可以使用Array#mapArray#forEach和哈希表。

 var a = [{ "id": 1, "name": "q" }, { "id": 2, "name": "l" }], b = [{ "id": 3, "sub": 1, "name": "ni" }, { "id": 4, "sub": 2, "name": "bh" }], hash = Object.create(null), result = a.map(function (a, i) { hash[a.id] = { id: a.id, name: a.name }; return hash[a.id]; }, hash); b.forEach(function (a) { hash[a.sub].map = hash[a.sub].map || []; hash[a.sub].map.push({ id: a.id, name: a.name }); }, hash); console.log(result); 

ES6

 var a = [{ "id": 1, "name": "q" }, { "id": 2, "name": "l" }], b = [{ "id": 3, "sub": 1, "name": "ni" }, { "id": 4, "sub": 2, "name": "bh" }], hash = Object.create(null), result = a.map((hash => a => hash[a.id] = { id: a.id, name: a.name, map: [] })(hash)); b.forEach((hash => a => hash[a.sub].map.push({ id: a.id, name: a.name }))(hash)); console.log(result); 

您可以借助map函數來執行此操作,然后使用find函數從另一個數組中搜索數據。

 var b = [{ "id": 3, "sub": 1, "name": "ni" }, { "id": 4, "sub": 2, "name": "bh" }]; var a = [{ "id": 1, "name": "q" }, { "id": 2, "name": "l" }]; var final = _.map(b, function(d) { return { id: d.name, name: d.name, map: _.find(a, function(adata) { return adata.id == d.sub; //use underscore find to get the relevant data from array a }) } }); console.log(final); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 

暫無
暫無

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

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