Thêm phần tử vào mảng đa chiều
Tôi muốn thêm một mục mới vào một trường mà tôi muốn bằng javascript vào một mảng như sau. Tôi đã có thể xử lý quá trình xóa với sự trợ giúp mà tôi nhận được từ liên kết bên dưới. Nhưng thêm vào có vẻ khó hơn một chút.
Vấn đề là thêm mục tôi muốn thêm, ví dụ, dưới phần tử có id = 10.
Xóa phần tử mảng khỏi mảng vô cực đa chiều
Ví dụ: Mục cần thêm
{
"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": []
},
Tôi muốn thêm mục ở trên vào navigation_sub_categories [] của mục có ID là 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": []
}
]
Trả lời
Nó quá dễ dàng hơn tôi nghĩ ngày hôm qua. Mã tương tự. Thử
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;
};
Rất vui được giúp bạn. Nếu cần bất kỳ sự trợ giúp nào, bạn có thể viết thư cho whatsapp của tôi. +994705069324. Hoặc Đăng ở đây nó tôi theo dõi bạn để được giúp đỡ ...
Sử dụng phương thức Array.prototype.find để tìm những gì bạn đang tìm kiếm.
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))