ধরুন, আমাদের কাছে এইরকম নেস্টেড অবজেক্টের একটি অ্যারে আছে -
const arr = [{ id: 1, legs:[{ carrierName:'Pegasus' }] }, { id: 2, legs:[{ carrierName: 'SunExpress' }, { carrierName: 'SunExpress' }] }, { id: 3, legs:[{ carrierName: 'Pegasus' }, { carrierName: 'SunExpress' }] }];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্টের মতো একটি অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসাবে একটি অনুসন্ধান ক্যোয়ারী স্ট্রিং নেয়৷
আমাদের ফাংশন অ্যারে ফিল্টার করা উচিত শুধুমাত্র সেইসব বস্তু ধারণ করার জন্য যার "ক্যারিয়ার নাম" সম্পত্তির মান দ্বিতীয় আর্গুমেন্ট দ্বারা নির্দিষ্ট করা একই মান।
যদি উপরের অ্যারের জন্য, দ্বিতীয় যুক্তিটি "পেগাসাস"। তারপর আউটপুট −
এর মত হওয়া উচিতconst output = [{ id: 1, legs:[{ carrierName:'Pegasus' }] }, { id: 3, legs:[{ carrierName: 'Pegasus' }, { carrierName: 'SunExpress' }] }];
উদাহরণ
এর জন্য কোড হবে −
const arr = [{ id: 1, legs:[{ carrierName:'Pegasus' }] }, { id: 2, legs:[{ carrierName: 'SunExpress' }, { carrierName: 'SunExpress' }] }, { id: 3, legs:[{ carrierName: 'Pegasus' }, { carrierName: 'SunExpress' }] }]; const keys = ['Pegasus']; const filterByKeys = (arr = [], keys = []) => { const res = arr.filter(function(item) { const thisObj = this; return item.legs.some(leg => { return thisObj[leg.carrierName]; }); }, keys.reduce((acc, val) => { acc[val] = true; return acc; }, Object.create(null))); return res; } console.log(JSON.stringify(filterByKeys(arr, keys), undefined, 4));
আউটপুট
এবং কনসোলে আউটপুট হবে −
[ { "id": 1, "legs": [ { "carrierName": "Pegasus" } ] }, { "id": 3, "legs": [ { "carrierName": "Pegasus" }, { "carrierName": "SunExpress" } ] } ]