Menambahkan elemen ke Array Multidimensi

Sep 24 2020

Saya ingin menambahkan item baru ke bidang yang saya inginkan dengan javascript ke dalam array sebagai berikut. Saya dapat menangani proses penghapusan dengan bantuan yang saya dapatkan dari tautan di bawah ini. Tetapi menambahkan tampaknya sedikit lebih sulit.

Masalahnya adalah menambahkan item yang ingin saya tambahkan, misalnya, di bawah elemen dengan id = 10.

Hapus Elemen Array Dari Multidimensional Infinity Array

Contoh: Item untuk ditambahkan

{
        "id": 99,
        "navigation_main_category_id": 6,
        "navigation_sub_category_id": null,
        "place": 100,
        "header_tr": "Example item",
        "header_en": "Example item",
        "content_tr": "example-item",
        "content_en": "example-item",
        "href_tr": "example-item",
        "href_en": "example-item",
        "constant_status": "İç Link",
        "visible_main_status": "Aktif",
        "created_at": "2020-05-24 01:08:59",
        "updated_at": "2020-05-24 01:08:59",
        "deleted_at": null,
        "navigation_sub_categories": [],
        "dynamic_fixed_pages": []
    },

Saya ingin menambahkan item di atas ke navigation_sub_categories [] dari item yang ID-nya 10.

[
{
    "id": 6,
    "place": 100,
    "header_tr": "KURUMSAL",
    "header_en": "CORPORATE",
    "content_tr": "kurumsal",
    "content_en": "corporate",
    "visible_main_status": "Aktif",
    "created_at": "2020-05-24 01:02:36",
    "updated_at": "2020-05-24 01:02:36",
    "deleted_at": null,
    "navigation_sub_categories": [
        {
            "id": 10,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 100,
            "header_tr": "Vizyonumuz ve Misyonumuz",
            "header_en": "Vizyonumuz ve Misyonumuz",
            "content_tr": "vizyonumuz-ve-misyonumuz",
            "content_en": "vizyonumuz-ve-misyonumuz",
            "href_tr": "vizyonumuz-ve-misyonumuz",
            "href_en": "vizyonumuz-ve-misyonumuz",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:08:59",
            "updated_at": "2020-05-24 01:08:59",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 11,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 99,
            "header_tr": "Temel Değerlerimiz ve Yönetim Politikamız",
            "header_en": "Temel Değerlerimiz ve Yönetim Politikamız",
            "content_tr": "Temel Değerlerimiz ve Yönetim Politikamız",
            "content_en": "Temel Değerlerimiz ve Yönetim Politikamız",
            "href_tr": "Temel Değerlerimiz ve Yönetim Politikamız",
            "href_en": "Temel Değerlerimiz ve Yönetim Politikamız",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:09:26",
            "updated_at": "2020-05-24 01:09:26",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 12,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 98,
            "header_tr": "Organizasyon Yapısı",
            "header_en": "Organizasyon Yapısı",
            "content_tr": "Organizasyon Yapısı",
            "content_en": "Organizasyon Yapısı",
            "href_tr": "Organizasyon Yapısı",
            "href_en": "Organizasyon Yapısı",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:10:33",
            "updated_at": "2020-05-24 01:10:33",
            "deleted_at": null,
            "navigation_sub_categories": [
                {
                    "id": 19,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 12,
                    "place": 100,
                    "header_tr": "Yönetim Kurulu",
                    "header_en": "Yönetim Kurulu",
                    "content_tr": "/tr/kurumsal/organizasyon-yapilari/yonetim-kurulu",
                    "content_en": "/en/kurumsal/organizasyon-yapilari/yonetim-kurulu",
                    "href_tr": "Yönetim Kurulu",
                    "href_en": "Yönetim Kurulu",
                    "constant_status": "İç Link",
                    "visible_main_status": "Aktif",
                    "created_at": "2020-05-24 01:13:27",
                    "updated_at": "2020-05-26 08:58:49",
                    "deleted_at": null,
                    "navigation_sub_categories": [],
                    "dynamic_fixed_pages": []
                },
                {
                    "id": 20,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 12,
                    "place": 99,
                    "header_tr": "Meclis",
                    "header_en": "Meclis",
                    "content_tr": "Meclis",
                    "content_en": "Meclis",
                    "href_tr": "Meclis",
                    "href_en": "Meclis",
                    "constant_status": "İç Link",
                    "visible_main_status": "Aktif",
                    "created_at": "2020-05-24 01:13:46",
                    "updated_at": "2020-05-24 01:13:46",
                    "deleted_at": null,
                    "navigation_sub_categories": [],
                    "dynamic_fixed_pages": []
                },
                {
                    "id": 21,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 12,
                    "place": 98,
                    "header_tr": "Disiplin Kurulu",
                    "header_en": "Disiplin Kurulu",
                    "content_tr": "Disiplin Kurulu",
                    "content_en": "Disiplin Kurulu",
                    "href_tr": "Disiplin Kurulu",
                    "href_en": "Disiplin Kurulu",
                    "constant_status": "İç Link",
                    "visible_main_status": "Aktif",
                    "created_at": "2020-05-24 01:14:06",
                    "updated_at": "2020-05-24 01:14:06",
                    "deleted_at": null,
                    "navigation_sub_categories": [],
                    "dynamic_fixed_pages": []
                },
                {
                    "id": 22,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 12,
                    "place": 97,
                    "header_tr": "Meslek Komiteleri Üyeleri",
                    "header_en": "Meslek Komiteleri Üyeleri",
                    "content_tr": "Meslek Komiteleri Üyeleri",
                    "content_en": "Meslek Komiteleri Üyeleri",
                    "href_tr": "Meslek Komiteleri Üyeleri",
                    "href_en": "Meslek Komiteleri Üyeleri",
                    "constant_status": "İç Link",
                    "visible_main_status": "Aktif",
                    "created_at": "2020-05-24 01:14:32",
                    "updated_at": "2020-05-24 01:14:32",
                    "deleted_at": null,
                    "navigation_sub_categories": [
                        {
                            "id": 23,
                            "navigation_main_category_id": 6,
                            "navigation_sub_category_id": 22,
                            "place": 100,
                            "header_tr": "Meslek Altı",
                            "header_en": "Meslek Altı",
                            "content_tr": "Meslek Altı",
                            "content_en": "Meslek Altı",
                            "href_tr": "Meslek Altı",
                            "href_en": "Meslek Altı",
                            "constant_status": "İç Link",
                            "visible_main_status": "Pasif",
                            "created_at": "2020-05-24 11:32:00",
                            "updated_at": "2020-05-24 11:32:00",
                            "deleted_at": null,
                            "navigation_sub_categories": [
                                {
                                    "id": 24,
                                    "navigation_main_category_id": 6,
                                    "navigation_sub_category_id": 23,
                                    "place": 100,
                                    "header_tr": "Meslek Alt Alt",
                                    "header_en": "Meslek Alt Alt",
                                    "content_tr": "Meslek Alt Alt",
                                    "content_en": "Meslek Alt Alt",
                                    "href_tr": "Meslek Alt Alt",
                                    "href_en": "Meslek Alt Alt",
                                    "constant_status": "İç Link",
                                    "visible_main_status": "Pasif",
                                    "created_at": "2020-05-24 11:33:20",
                                    "updated_at": "2020-05-24 11:33:20",
                                    "deleted_at": null,
                                    "navigation_sub_categories": [],
                                    "dynamic_fixed_pages": []
                                },
                                {
                                    "id": 76,
                                    "navigation_main_category_id": 6,
                                    "navigation_sub_category_id": 23,
                                    "place": 44,
                                    "header_tr": "44",
                                    "header_en": "44",
                                    "content_tr": null,
                                    "content_en": null,
                                    "href_tr": null,
                                    "href_en": null,
                                    "constant_status": "İç Link",
                                    "visible_main_status": "Aktif",
                                    "created_at": "2020-09-24 12:51:25",
                                    "updated_at": "2020-09-24 12:51:25",
                                    "deleted_at": null,
                                    "navigation_sub_categories": [],
                                    "dynamic_fixed_pages": []
                                },
                                {
                                    "id": 79,
                                    "navigation_main_category_id": 6,
                                    "navigation_sub_category_id": 23,
                                    "place": 77,
                                    "header_tr": "77",
                                    "header_en": "77",
                                    "content_tr": null,
                                    "content_en": null,
                                    "href_tr": null,
                                    "href_en": null,
                                    "constant_status": "İç Link",
                                    "visible_main_status": "Aktif",
                                    "created_at": "2020-09-24 12:51:43",
                                    "updated_at": "2020-09-24 12:51:43",
                                    "deleted_at": null,
                                    "navigation_sub_categories": [],
                                    "dynamic_fixed_pages": []
                                }
                            ],
                            "dynamic_fixed_pages": []
                        }
                    ],
                    "dynamic_fixed_pages": []
                }
            ],
            "dynamic_fixed_pages": []
        },
        {
            "id": 13,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 97,
            "header_tr": "Meclis Konuşmaları",
            "header_en": "Meclis Konuşmaları",
            "content_tr": "Meclis Konuşmaları",
            "content_en": "Meclis Konuşmaları",
            "href_tr": "Meclis Konuşmaları",
            "href_en": "Meclis Konuşmaları",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:11:21",
            "updated_at": "2020-05-24 01:11:21",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 14,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 96,
            "header_tr": "Logo",
            "header_en": "Logo",
            "content_tr": "Logo",
            "content_en": "Logo",
            "href_tr": "Logo",
            "href_en": "Logo",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:11:39",
            "updated_at": "2020-05-24 01:11:39",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 15,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 96,
            "header_tr": "Oda Hesapları",
            "header_en": "Oda Hesapları",
            "content_tr": "Oda Hesapları",
            "content_en": "Oda Hesapları",
            "href_tr": "Oda Hesapları",
            "href_en": "Oda Hesapları",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:11:58",
            "updated_at": "2020-05-24 01:11:58",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 16,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 95,
            "header_tr": "Stratejik Planlar ve Çalışma Programları",
            "header_en": "Stratejik Planlar ve Çalışma Programları",
            "content_tr": "Stratejik Planlar ve Çalışma Programları",
            "content_en": "Stratejik Planlar ve Çalışma Programları",
            "href_tr": "Stratejik Planlar ve Çalışma Programları",
            "href_en": "Stratejik Planlar ve Çalışma Programları",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:12:17",
            "updated_at": "2020-05-24 01:12:17",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 17,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 94,
            "header_tr": "Kardeş Odalar",
            "header_en": "Kardeş Odalar",
            "content_tr": "Kardeş Odalar",
            "content_en": "Kardeş Odalar",
            "href_tr": "Kardeş Odalar",
            "href_en": "Kardeş Odalar",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:12:36",
            "updated_at": "2020-05-24 01:12:36",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 18,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": null,
            "place": 94,
            "header_tr": "KVKK",
            "header_en": "KVKK",
            "content_tr": "KVKK",
            "content_en": "KVKK",
            "href_tr": "KVKK",
            "href_en": "KVKK",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:12:55",
            "updated_at": "2020-05-24 01:12:55",
            "deleted_at": null,
            "navigation_sub_categories": [
                {
                    "id": 27,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 18,
                    "place": 10,
                    "header_tr": "Test Kvkk Alt",
                    "header_en": "Test Kvkk Alt EN",
                    "content_tr": "Test Kvkk Alt",
                    "content_en": "Test Kvkk Alt EN",
                    "href_tr": "test-kvkk-alt-tr",
                    "href_en": "test-kvkk-alt-en",
                    "constant_status": "İç Link",
                    "visible_main_status": "Aktif",
                    "created_at": "2020-09-21 13:10:38",
                    "updated_at": "2020-09-21 13:10:38",
                    "deleted_at": null,
                    "navigation_sub_categories": [],
                    "dynamic_fixed_pages": []
                }
            ],
            "dynamic_fixed_pages": []
        }
    ]
},
{
    "id": 12,
    "navigation_main_category_id": 6,
    "navigation_sub_category_id": null,
    "place": 98,
    "header_tr": "Organizasyon Yapısı",
    "header_en": "Organizasyon Yapısı",
    "content_tr": "Organizasyon Yapısı",
    "content_en": "Organizasyon Yapısı",
    "href_tr": "Organizasyon Yapısı",
    "href_en": "Organizasyon Yapısı",
    "constant_status": "İç Link",
    "visible_main_status": "Aktif",
    "created_at": "2020-05-24 01:10:33",
    "updated_at": "2020-05-24 01:10:33",
    "deleted_at": null,
    "navigation_sub_categories": [
        {
            "id": 19,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": 12,
            "place": 100,
            "header_tr": "Yönetim Kurulu",
            "header_en": "Yönetim Kurulu",
            "content_tr": "/tr/kurumsal/organizasyon-yapilari/yonetim-kurulu",
            "content_en": "/en/kurumsal/organizasyon-yapilari/yonetim-kurulu",
            "href_tr": "Yönetim Kurulu",
            "href_en": "Yönetim Kurulu",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:13:27",
            "updated_at": "2020-05-26 08:58:49",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 20,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": 12,
            "place": 99,
            "header_tr": "Meclis",
            "header_en": "Meclis",
            "content_tr": "Meclis",
            "content_en": "Meclis",
            "href_tr": "Meclis",
            "href_en": "Meclis",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:13:46",
            "updated_at": "2020-05-24 01:13:46",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 21,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": 12,
            "place": 98,
            "header_tr": "Disiplin Kurulu",
            "header_en": "Disiplin Kurulu",
            "content_tr": "Disiplin Kurulu",
            "content_en": "Disiplin Kurulu",
            "href_tr": "Disiplin Kurulu",
            "href_en": "Disiplin Kurulu",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:14:06",
            "updated_at": "2020-05-24 01:14:06",
            "deleted_at": null,
            "navigation_sub_categories": [],
            "dynamic_fixed_pages": []
        },
        {
            "id": 22,
            "navigation_main_category_id": 6,
            "navigation_sub_category_id": 12,
            "place": 97,
            "header_tr": "Meslek Komiteleri Üyeleri",
            "header_en": "Meslek Komiteleri Üyeleri",
            "content_tr": "Meslek Komiteleri Üyeleri",
            "content_en": "Meslek Komiteleri Üyeleri",
            "href_tr": "Meslek Komiteleri Üyeleri",
            "href_en": "Meslek Komiteleri Üyeleri",
            "constant_status": "İç Link",
            "visible_main_status": "Aktif",
            "created_at": "2020-05-24 01:14:32",
            "updated_at": "2020-05-24 01:14:32",
            "deleted_at": null,
            "navigation_sub_categories": [
                {
                    "id": 23,
                    "navigation_main_category_id": 6,
                    "navigation_sub_category_id": 22,
                    "place": 100,
                    "header_tr": "Meslek Altı",
                    "header_en": "Meslek Altı",
                    "content_tr": "Meslek Altı",
                    "content_en": "Meslek Altı",
                    "href_tr": "Meslek Altı",
                    "href_en": "Meslek Altı",
                    "constant_status": "İç Link",
                    "visible_main_status": "Pasif",
                    "created_at": "2020-05-24 11:32:00",
                    "updated_at": "2020-05-24 11:32:00",
                    "deleted_at": null,
                    "navigation_sub_categories": [
                        {
                            "id": 24,
                            "navigation_main_category_id": 6,
                            "navigation_sub_category_id": 23,
                            "place": 100,
                            "header_tr": "Meslek Alt Alt",
                            "header_en": "Meslek Alt Alt",
                            "content_tr": "Meslek Alt Alt",
                            "content_en": "Meslek Alt Alt",
                            "href_tr": "Meslek Alt Alt",
                            "href_en": "Meslek Alt Alt",
                            "constant_status": "İç Link",
                            "visible_main_status": "Pasif",
                            "created_at": "2020-05-24 11:33:20",
                            "updated_at": "2020-05-24 11:33:20",
                            "deleted_at": null,
                            "navigation_sub_categories": [],
                            "dynamic_fixed_pages": []
                        },
                        **{
                            "id": 76,
                            "navigation_main_category_id": 6,
                            "navigation_sub_category_id": 23,
                            "place": 44,
                            "header_tr": "44",
                            "header_en": "44",
                            "content_tr": null,
                            "content_en": null,
                            "href_tr": null,
                            "href_en": null,
                            "constant_status": "İç Link",
                            "visible_main_status": "Aktif",
                            "created_at": "2020-09-24 12:51:25",
                            "updated_at": "2020-09-24 12:51:25",
                            "deleted_at": null,
                            "navigation_sub_categories": [],
                            "dynamic_fixed_pages": []
                        },**
                        {
                            "id": 79,
                            "navigation_main_category_id": 6,
                            "navigation_sub_category_id": 23,
                            "place": 77,
                            "header_tr": "77",
                            "header_en": "77",
                            "content_tr": null,
                            "content_en": null,
                            "href_tr": null,
                            "href_en": null,
                            "constant_status": "İç Link",
                            "visible_main_status": "Aktif",
                            "created_at": "2020-09-24 12:51:43",
                            "updated_at": "2020-09-24 12:51:43",
                            "deleted_at": null,
                            "navigation_sub_categories": [],
                            "dynamic_fixed_pages": []
                        }
                    ],
                    "dynamic_fixed_pages": []
                }
            ],
            "dynamic_fixed_pages": []
        }
    ],
    "dynamic_fixed_pages": []
}

]

Jawaban

MDReal Sep 25 2020 at 06:18

Sangat mudah juga dari yang saya pikirkan kemarin. Kode serupa. Mencoba

const filterObject = (object, id, obj) => {
  const newObj = [];
  object.map((element) => {
    if (
      typeof element.navigation_sub_categories === "object" &&
      Array.isArray(element.navigation_sub_categories)
    )
      element.navigation_sub_categories = filterObject(element.navigation_sub_categories, id, obj);

    if (parseInt(element.id) === parseInt(id))
      element.navigation_sub_categories = [element.navigation_sub_categories, obj].filter(Boolean);
    newObj.push(element);
  });
  return newObj;
};

Senang bisa membantu Anda. Jika butuh bantuan juga, Anda dapat menulis ke whatsapp saya. +994705069324. Atau Posting Di Sini saya melacak Anda untuk bantuan ...

MattEllen Sep 24 2020 at 20:08

Gunakan metode Array.prototype.find untuk menemukan apa yang Anda cari.

function addSubSubObject(objs, mainid, subid, subsubobj)
{
  let mainobj = objs.find(o => o.id == mainid);
  if(mainobj)
  {
    let subobj = mainobj.navigation_sub_categories.find(o => o.id == subid);
    if(subobj)
    {
      subobj.navigation_sub_categories.push(subsubobj);
      subsubobj.navigation_sub_category_id = subid;
    }
    else
    {
      let subindex = 0;
      while(!subobj && subindex < mainobj.navigation_sub_categories.length)
      {
        const objToCheck = mainobj.navigation_sub_categories[subindex];
        if(objToCheck.navigation_sub_categories.length > 0)
        {
          subobj = findSubObject(objToCheck, subid);
        }
        subindex++;
      }
      
      if(subobj)
      {
        subobj.navigation_sub_categories.push(subsubobj);
        subsubobj.navigation_sub_category_id = subobj.id;
      }
    }
  }
}

function findSubObject(mainObj, subid)
{
  let subobj = mainObj.navigation_sub_categories.find(o => o.id == subid);
  if(!subobj)
  {
    let subindex = 0;
    while(!subobj && subindex < mainobj.navigation_sub_categories.length)
    {
      const objToCheck = mainobj.navigation_sub_categories[subindex];
      if(objToCheck.navigation_sub_categories.length > 0)
      {
          subobj = findSubObject(objToCheck, subid);
      }
      subindex++;
    }
  }
  return subobj;
}

let ins = 
{
  "id": 99,
  "navigation_main_category_id": 6,
  "navigation_sub_category_id": null,
  "navigation_sub_categories": [],
};

let ins2 = 
{
  id:44,
  "navigation_main_category_id": 6,
  "navigation_sub_category_id": null,
  "navigation_sub_categories": [],
};

let objs = 
[
{
    "id": 6,
    "navigation_sub_categories": 
    [
    {
      "id": 10,
      "navigation_main_category_id": 6,
      "navigation_sub_category_id": null,
      "navigation_sub_categories": [],
    }
    ]
}
]

addSubSubObject(objs, 6, 10, ins);
addSubSubObject(objs, 6, 99, ins2);

console.log(JSON.stringify(objs))