मान लीजिए, हमारे पास नेस्टेड ऑब्जेक्ट्स का ऐसा ऐरे है:
const arr = [{ id: 1, legs:[{ carrierName:'Pegasus' }] }, { id: 2, legs:[{ carrierName: 'SunExpress' }, { carrierName: 'SunExpress' }] }, { id: 3, legs:[{ carrierName: 'Pegasus' }, { carrierName: 'SunExpress' }] }];हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसा ऐरे पहले आर्गुमेंट के रूप में और एक सर्च क्वेरी स्ट्रिंग दूसरे आर्गुमेंट के रूप में लेता है।
हमारा फ़ंक्शन ऐरे को फ़िल्टर करना चाहिए ताकि केवल वही ऑब्जेक्ट्स रहें जिनकी "carrier name" प्रॉपर्टी का मान दूसरे आर्गुमेंट द्वारा निर्दिष्ट मान के समान हो।
यदि उपरोक्त ऐरे के लिए दूसरा आर्गुमेंट "Pegasus" है। तो आउटपुट इस तरह दिखना चाहिए:
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" } ] } ]