मान लीजिए, हमारे पास इस तरह की नेस्टेड वस्तुओं की एक सरणी है -
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" } ] } ]