मान लीजिए, हमारे पास इस तरह की वस्तुओं की दो सरणियाँ हैं -
const data = [ {"XD_A":"XDL","XD_B_1":"38","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"51","XD_B_2":"PB"}, {"XD_A":"XDL","XD_B_1":"58","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}, {"XD_A":"XDL","XD_B_1":"76","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"} ]; const filters =[{"XD_A":"XDR"},{"XD_B_1":"38"}];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो दो ऐसे सरणियों को क्रमशः पहले और दूसरे तर्क के रूप में लेता है।
फिर फ़ंक्शन को केवल पहली सरणी (डेटा सरणी) से उन वस्तुओं को चुनना चाहिए जिनमें वे सभी कुंजी-मूल्य जोड़े शामिल हैं जो दूसरी सरणी (फ़िल्टर सरणी) में मौजूद हैं।
और फ़ंक्शन को उन सभी वस्तुओं को एक नई वस्तु में धकेलना चाहिए और उस वस्तु को वापस करना चाहिए।
उपरोक्त सरणी के लिए, लौटाए गए सरणी में ठीक इस तरह की दो वस्तुएं होनी चाहिए -
const output = [ {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"} ];
उदाहरण
इसके लिए कोड होगा -
const data = [ {"XD_A":"XDL","XD_B_1":"38","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"51","XD_B_2":"PB"}, {"XD_A":"XDL","XD_B_1":"58","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}, {"XD_A":"XDL","XD_B_1":"76","XD_B_2":"PB"}, {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"} ]; const filters =[{"XD_A":"XDR"},{"XD_B_1":"38"}]; const filter = (data, filters) => { return data.filter(e => { try{ filters.forEach(o => { Object.keys(o).forEach(key => { if(e[key] !== o[key]) throw new 1; }); }); return true; } catch(e){ return false; } }); } console.info(filter(data, filters));
आउटपुट
और कंसोल में आउटपुट होगा -
[ { XD_A: 'XDR', XD_B_1: '38', XD_B_2: 'PB' }, { XD_A: 'XDR', XD_B_1: '38', XD_B_2: 'PB' } ]