Aggiunta di elementi all'array multidimensionale
Voglio aggiungere un nuovo elemento a un campo che voglio con javascript in un array come segue. Sono stato in grado di gestire il processo di rimozione con l'aiuto che ho ricevuto dal link sottostante. Ma l'aggiunta sembra un po 'più difficile.
Il problema è aggiungere l'elemento che voglio aggiungere, ad esempio, sotto l'elemento con id = 10.
Elimina elemento array da array infinito multidimensionale
Esempio: elemento da aggiungere
{
"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": []
},
Voglio aggiungere l'elemento precedente a navigation_sub_categories [] dell'elemento il cui ID è 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": []
}
]
Risposte
È anche così facile di quanto penso ieri. Codice simile. Provare
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;
};
Piacere di aiutarti. Se hai bisogno anche di aiuto puoi scrivere al mio whatsapp. +994705069324. Oppure pubblica qui, ti seguo per chiedere aiuto ...
Usa il metodo Array.prototype.find per trovare quello che stai cercando.
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))