البرمجة

بحث في JSON متعدد الأبعاد باستخدام JavaScript

في هذا المقال سنتناول كيفية البحث في JSON متعدد الأبعاد باستخدام JavaScript للعثور على السلاسل المحددة واسترجاع جميع العقد التي تحتوي على تلك السلاسل. سنقوم بإنشاء وظيفة تقوم بالبحث في كل عقدة من عقد JSON وفي حال وجود السلسلة المحددة، ستضيف العقدة إلى مصفوفة تمثل النتائج المطلوبة. هيا نبدأ:

javascript
// الدالة التي تقوم بالبحث في JSON متعدد الأبعاد function searchInJson(json, searchString) { let results = []; // دالة التفتيش تبحث في كل عقدة function search(node, path) { // التأكد من أن العقدة ليست فارغة if (node !== null && typeof node === 'object') { // حلق عبر جميع عناصر العقدة for (let key in node) { if (node.hasOwnProperty(key)) { let newPath = path + '.' + key; let value = node[key]; // إذا كانت القيمة نصًا وتحتوي على السلسلة المحددة، قم بإضافة العقدة إلى النتائج if (typeof value === 'string' && value.includes(searchString)) { results.push({ path: newPath, value: value }); } // إذا كانت القيمة عقدة، قم بالبحث فيها أيضًا if (typeof value === 'object') { search(value, newPath); } } } } } // بدء البحث من العقدة الجذرية search(json, 'root'); return results; } // JSON متعدد الأبعاد للاختبار let json = { "name": "John", "age": 30, "cars": { "car1": "Ford", "car2": "BMW", "car3": "Fiat" } }; // البحث عن السلسلة "Ford" let searchString = "Ford"; let searchResults = searchInJson(json, searchString); // طباعة النتائج console.log("نتائج البحث عن السلسلة '" + searchString + "':"); searchResults.forEach(result => { console.log(result.path + " - " + result.value); });

يمكنك استبدال المتغير json بالبيانات JSON الفعلية التي تحتاج إلى البحث فيها، ويمكنك تغيير السلسلة searchString إلى السلسلة التي تبحث عنها. ستقوم الدالة searchInJson بإرجاع مصفوفة تحتوي على جميع العقد التي تحتوي على السلسلة المحددة، بالإضافة إلى مسارات العقد الذي تم العثور عليه.

المزيد من المعلومات

بالتأكيد، هنا بعض المعلومات الإضافية حول كيفية عمل الكود:

  1. البحث في العقدة الجذرية: يبدأ البحث من العقدة الجذرية في JSON ويتحرك عبر كل عقدة وفرع من العقدة الجذرية باستخدام دالة التفتيش search داخل الدالة searchInJson.

  2. التحقق من العقدة الفارغة: يتم التحقق من عدم فراغ العقدة قبل تحليل محتواها للتأكد من عدم حدوث أخطاء.

  3. الحلق عبر العقدة: يتم استخدام حلقة for...in للحصول على جميع العناصر داخل العقدة، ويتم التحقق من خصائص العقدة باستخدام hasOwnProperty لضمان عدم احتواء العقدة على خصائص موروثة.

  4. التحقق من نوع القيمة: يتم التحقق من نوع القيمة لكل عنصر في العقدة، وإذا كانت القيمة نصًا وتحتوي على السلسلة المحددة، فإن العقدة تُضاف إلى النتائج.

  5. البحث في العقدات الفرعية: إذا كانت القيمة عبارة عن عقدة، يتم استدعاء الدالة search مرة أخرى للبحث في هذه العقدة الفرعية.

  6. تنسيق النتائج: يتم تنسيق النتائج في كائن يحتوي على مسار العقدة وقيمتها، ويتم طباعة هذه النتائج في نهاية الكود.

هذه الطريقة تعتمد على التفتيش العميق في العقد JSON، مما يتيح العثور على السلسلة المحددة في أي موضع داخل العقد، سواء كانت في العقدة الجذرية أو في عقدات فرعية.

زر الذهاب إلى الأعلى