मान लें, हमारे पास एक द्वि-आयामी सरणी है जिसमें कुछ रंगों और इस तरह के फलों के बारे में डेटा है
कॉन्स डेटा =[ ['नारंगी', 'फल'], ['लाल', 'रंग'], ['हरा', 'रंग'], ['नारंगी', 'रंग'], ['केला' ', 'फल'], ['नीला', 'रंग'], ['नींबू', 'फल'], ['आम', 'फल'], ['नींबू', 'रंग'],];पूर्व>हमें एक फ़ंक्शन लिखना है जो इस सरणी में लेता है और एक सरणी देता है जिसमें विभिन्न फलों और रंगों को उनकी श्रेणियों द्वारा समूहीकृत किया जाता है।
जैसे इस उदाहरण में हमारे पास केवल दो श्रेणियां हैं, अर्थात् 'फल' और 'रंग', इसलिए हमें इस तरह के आउटपुट में दो वस्तुओं की एक सरणी की अपेक्षा करनी चाहिए -
[ { समूह:'फल', मान:['नारंगी', 'केला', 'नींबू', 'आम'] }, {समूह:'रंग', मान:[ 'लाल', 'हरा', 'नारंगी', 'नीला', 'नींबू'] }]नोट - इस उदाहरण में हमारे पास केवल दो श्रेणियां हैं लेकिन हमें एक ऐसा समाधान लिखने की आवश्यकता है जो केवल दो श्रेणियों के लिए नहीं बल्कि एक गतिशील संख्या के लिए काम करे।
तो आइए जानते हैं इस समस्या का समाधान। हम Array.prototype.reduce() विधि का उपयोग करेंगे और प्रत्येक उपसरणी के लिए हम जांच करेंगे कि हमारे पास कोई मौजूदा समूह है या नहीं। यदि समूह मौजूद है, तो हम नए मान को उसके मूल्य गुण में धकेलते हैं अन्यथा हम उस समूह के लिए एक नई वस्तु बनाते हैं और उसे सरणी में धकेल देते हैं।
उदाहरण
कॉन्स डेटा =[ ['नारंगी', 'फल'], ['लाल', 'रंग'], ['हरा', 'रंग'], ['नारंगी', 'रंग'], ['केला' ', 'फल'], ['नीला', 'रंग'], ['नींबू', 'फल'], ['आम', 'फल'], ['नींबू', 'रंग'],]; groupData =arr => {वापसी arr.reduce ((acc, val) => { const [value, groupName] =val; const groupIndex =acc.findIndex (el => el?.group ===groupName); अगर ( groupIndex !==-1){ acc[groupIndex].value.push(value); }else{ acc.push({group:groupName, value:[value] }); } वापसी एसीसी; }, []); };console.log(groupData(data));आउटपुट
कंसोल में आउटपुट होगा -
[ { समूह:'फल', मान:['नारंगी', 'केला', 'नींबू', 'आम'] }, {समूह:'रंग', मान:[ 'लाल', 'हरा', 'नारंगी', 'नीला', 'नींबू'] }]