मान लीजिए कि हमारे पास वस्तुओं की एक सरणी है जिसमें कुछ छात्रों के बारे में डेटा और उनके अंक इस तरह हैं -
const arr =[{विषय:'गणित', अंक:'40', noOfStudents:'5'}, {विषय:'विज्ञान', अंक:'50', noOfStudents:'16'}, { विषय:'इतिहास', अंक:'35', कोई छात्र नहीं:'23'}, {विषय:'विज्ञान', अंक:'65', कोई छात्र नहीं:'2'}, {विषय:'गणित', अंक:'30', noOfStudents:'12'}, {विषय:'इतिहास', अंक:'55', noOfStudents:'20'},];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक ऐसी सरणी लेता है।
फ़ंक्शन को वस्तुओं की 'विषय' संपत्ति के आधार पर अनावश्यक प्रविष्टियों को समाप्त करना चाहिए। इसके अलावा, फ़ंक्शन को उस एकल ऑब्जेक्ट में एक अद्वितीय ऑब्जेक्ट के लिए सभी अंक और छात्रों की संख्या को जोड़ना चाहिए।
इसलिए, उपरोक्त सरणी के लिए, आउटपुट इस तरह दिखना चाहिए -
const आउटपुट =[{विषय:'गणित', अंक:'70', noOfStudents:'17'}, {विषय:'विज्ञान', अंक:'115', noOfStudents:'18'}, {विषय:'इतिहास', निशान:'95', noOfStudents:'43' },];
उदाहरण
इसके लिए कोड होगा -
const arr =[{विषय:'गणित', अंक:'40', noOfStudents:'5'}, {विषय:'विज्ञान', अंक:'50', noOfStudents:'16'}, { विषय:'इतिहास', अंक:'35', कोई छात्र नहीं:'23'}, {विषय:'विज्ञान', अंक:'65', कोई छात्र नहीं:'2'}, {विषय:'गणित', अंक:'30', noOfStudents:'12'}, {विषय:'इतिहास', अंक:'55', noOfStudents:'20'},];const groupBySubject =(arr =[]) => { const map ={}; लेट रेस =[]; res =arr.reduce((acc, val) => {const {विषय, अंक, noOfStudents} =वैल; const {लंबाई:l} =acc; if(map.hasOwnProperty(subject)){ acc[map[subject] ['अंक'] =+ अंक; एसीसी [मानचित्र [विषय]] ['नोऑफ स्टूडेंट्स'] =+ नोऑफ स्टूडेंट्स; } अन्य {मानचित्र [विषय] =एल; एसीसी पुश ({विषय:विषय, अंक:+ अंक, noOfStudents:+noOfStudents }); }; वापसी एसीसी; }, []); वापसी res;};कंसोल.लॉग(groupBySubject(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
[ { विषय:'गणित', अंक:30, नोऑफ़स्टूडेंट्स:12}, {विषय:'विज्ञान', अंक:65, नोऑफ़स्टूडेंट्स:2}, {विषय:'इतिहास', अंक:55, नोऑफ़स्टूडेंट्स:20 }]पूर्व>