? यह अंततः बाहर है! किसी फ़ील्ड के विशिष्ट मान के आधार पर वस्तुओं की एक श्रृंखला को समूहीकृत करने के लिए अब बदसूरत कोड लिखने की आवश्यकता नहीं है!
2023 के अंत से, ऑब्जेक्ट के लिए ग्रुपबाय() नामक एक आधिकारिक स्थिर विधि है जो हमारे लिए यह करती है!
यह एक Iterable को स्वीकार करता है, जैसे कि एक Array, और एक फ़ंक्शन, जिसे प्रत्येक तत्व के लिए निष्पादित किया जाता है और उसे उस विशिष्ट तत्व की "श्रेणी" वापस करनी होगी।
विधि एक नई वस्तु लौटाती है जहां प्रत्येक कुंजी एक अलग श्रेणी होती है जिसमें उस विशिष्ट श्रेणी से संबंधित वस्तुओं की एक श्रृंखला होती है।
ध्यान दें: लौटाई गई वस्तु और मूल पुनरावर्तनीय में तत्व समान हैं (गहरी प्रतियां नहीं!)। तत्वों की आंतरिक संरचना में परिवर्तन मूल पुनरावर्तनीय और लौटाई गई वस्तु दोनों में दिखाई देगा।
आइए यह देखने के लिए एक व्यावहारिक उदाहरण दें कि सभी निंजा कछुओं के पात्रों को उम्र के आधार पर समूहित करना कितना आसान है।
const ninjaTurtlesCharacters = [ { age: 16, name: 'Michelangelo' }, { age: 16, name: 'Raffaello' }, { age: 16, name: 'Donatello' }, { age: 16, name: 'Leonardo' }, { age: 91, name: 'Splinter' }, { age: 25, name: 'Casey Jones' }, { age: 25, name: 'April O\'Neil' } ];
const ninjaTurtlesCharactersByAge = ninjaTurtlesCharacters.reduce( (groupedPeople, item) => ({ ...groupedPeople, [item.age]: groupedPeople[item.age] ? [...groupedPeople[item.age], item] : [item], }), {} );
const ninjaTurtlesCharactersByAgeNew = Object.groupBy( ninjaTurtlesCharacters, ({ age }) => age );
टिप: यदि आप किसी ऑब्जेक्ट के बजाय मैप वापस करना चाहते हैं तो Map.groupBy() का उपयोग करें
{ "16": [ { age: 16, name: 'Michelangelo' }, { age: 16, name: 'Raffaello' }, { age: 16, name: 'Donatello' }, { age: 16, name: 'Leonardo' } ], "25": [ { age: 25, name: 'Casey Jones' }, { age: 25, name: 'April O\'Neil' } ], "91": [ { age: 91, name: 'Splinter' } ] }
??? हमेशा की तरह, मैंने कोड के साथ खेलने के लिए एक सरल स्टैकब्लिट्ज़ प्रोजेक्ट बनाया।
? दस्तावेज़: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy
ℹ ब्राउज़र समर्थन: https://caniuse.com/mdn-javascript_buildins_object_groupby
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3