簡體   English   中英

如何合並這兩個JavaScript對象?

[英]How can I combine these two JavaScript objects?

我有兩個JavaScript對象,如下所示;

cages = [
  {
    "id":1,
    "name":"Cage 1"
  },
  {
    "id":2,
    "name":"Cage 2"
  }
]

animals = [
  {
    "id":1,
    "name":"doge",
    "cages": [
      {
        "id":1,
        "name":"Cage 1"
      },
      {
        "id":2,
        "name":"Cage 2"
      }
    ]
  }
  {
    "id":2,
    "name":"kat",
    "cages": [
      {
        "id":2,
        "name":"Cage 2"
      }
    ]
  }
]

我想將動物添加到籠子對象中,以便最終實現;

cages = [
  {
    "id":1,
    "name":"Cage 1",
    "animals": [
      {
        "id":1,
        "name":"doge"
      }
    ]
  },
  {
    "id":2,
    "name":"Cage 2",
    "animals": [
      {
        "id":1,
        "name":"doge"
      },
      {
        "id":2,
        "name":"kat"
      }
    ]
  }
]

像這樣組合兩個對象的方法有哪些? 哪個效率最高? 我的第一次嘗試有一些嵌套的for循環,這些循環變得很深,很混亂,而且從未完全起作用。 到目前為止,這里有一些不完整的邏輯;

for(var i=0; i<animals.length; i++) {
    for(var n=0; n<animals.cages.length) {
      cages[].push(animals[i]);
    }
  }

我需要知道如何指定將動物推入哪個籠中。 我希望它像cages[cage].push(animals[i]); 但在這種情況下,每個籠形對象的鍵都相同。

使用嵌套循環

var i, j, k;
for (i = 0; i < animals.length; ++i) {
    for (j = 0; j < animals[i].cages.length; ++j) {
        // assuming cages[k].id === k
        // you may want to create a new cages object instead
        k = animals[i].cages[j].id; // neat shorthand
        if (!cages[k].animals) { // if no animals yet
            cages[k].animals = []; // initialise
        }
        cages[k].animals.push(
            { // add new animal to cage
                id: animals[i].id,
                name: animals[i].name
            }
        );
    }
}

暫無
暫無

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

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