"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में वस्तुओं को एकाधिक गुणों और समग्र मानों के आधार पर कैसे समूहित करें?

जावास्क्रिप्ट में वस्तुओं को एकाधिक गुणों और समग्र मानों के आधार पर कैसे समूहित करें?

2024-12-25 को प्रकाशित
ब्राउज़ करें:217

How to Group Objects by Multiple Properties and Aggregate Values in JavaScript?

एकाधिक गुणों के आधार पर वस्तुओं को समूहीकृत करना और मूल्यों को एकत्रित करना

एकाधिक गुणों के आधार पर किसी सरणी में वस्तुओं को समूहीकृत करने के कार्य में, एक सामान्य आवश्यकता है न केवल इन गुणों के आधार पर समूहीकृत किया जाता है, बल्कि कुछ वस्तु गुणों के मूल्यों का योग भी तैयार किया जाता है। हालाँकि, ऐसा समाधान जो सभी डुप्लिकेट को द्वि-आयामी सरणी में बसा देता है, अपर्याप्त है। रंग। इस सारणी में वस्तुओं को केवल तभी डुप्लिकेट माना जाता है जब उनका आकार और रंग दोनों समान हों। डुप्लिकेट ऑब्जेक्ट के लिए, हमें उनके उपयोग किए गए और इंस्टेंस मानों को जोड़ना होगा और डुप्लिकेट को हटाना होगा, जिसके परिणामस्वरूप अद्वितीय आकार और रंगों वाली ऑब्जेक्ट की एक संक्षिप्त सूची तैयार होगी।

Solution

इस समस्या को प्रभावी ढंग से हल करने के लिए, हम एक सहायक ऑब्जेक्ट के साथ मिलकर Array#reduce विधि का लाभ उठा सकते हैं जो सामने आए आकार और रंग संयोजनों को ट्रैक करता है:

const गिरफ्तार = [ {आकार: 'वर्ग', रंग: 'लाल', प्रयुक्त: 1, उदाहरण: 1 }, { आकार: 'वर्ग', रंग: 'लाल', प्रयुक्त: 2, उदाहरण: 1 }, { आकार: 'वृत्त', रंग: 'नीला', प्रयुक्त: 0, उदाहरण: 0 }, {आकार: 'वर्ग', रंग: 'नीला', प्रयुक्त: 4, उदाहरण: 4 }, { आकार: 'वृत्त', रंग: 'लाल', प्रयुक्त: 1, उदाहरण: 1 }, { आकार: 'वृत्त', रंग: 'लाल', प्रयुक्त: 1, उदाहरण: 0 }, {आकार: 'वर्ग', रंग: 'नीला', प्रयुक्त: 4, उदाहरण: 5 }, { आकार: 'वर्ग', रंग: 'लाल', प्रयुक्त: 2, उदाहरण: 1 }, ]; स्थिरांक सहायक = {}; स्थिरांक परिणाम = arr.reduce((आर, ओ) => { स्थिरांक कुंजी = `${o.shape}-${o.color}`; यदि (! सहायक[कुंजी]) { // यदि यह एक अद्वितीय संयोजन है, तो सहायक और परिणाम सरणी में जोड़ें हेल्पर[कुंजी] = ऑब्जेक्ट.असाइन({}, ओ); r.push(सहायक[कुंजी]); } अन्य { // यदि यह डुप्लिकेट है, तो हेल्पर में मान अपडेट करें सहायक[कुंजी].प्रयुक्त = o.प्रयुक्त; सहायक[कुंजी].उदाहरण = ओ.उदाहरण; } वापसी आर; }, []); कंसोल.लॉग(परिणाम);

आउटपुट:

const arr = [
  { shape: 'square', color: 'red', used: 1, instances: 1 },
  { shape: 'square', color: 'red', used: 2, instances: 1 },
  { shape: 'circle', color: 'blue', used: 0, instances: 0 },
  { shape: 'square', color: 'blue', used: 4, instances: 4 },
  { shape: 'circle', color: 'red', used: 1, instances: 1 },
  { shape: 'circle', color: 'red', used: 1, instances: 0 },
  { shape: 'square', color: 'blue', used: 4, instances: 5 },
  { shape: 'square', color: 'red', used: 2, instances: 1 },
];

const helper = {};
const result = arr.reduce((r, o) => {
  const key = `${o.shape}-${o.color}`;

  if (!helper[key]) {
    // If it's a unique combination, add to the helper and result array
    helper[key] = Object.assign({}, o);
    r.push(helper[key]);
  } else {
    // If it's a duplicate, update the values in the helper
    helper[key].used  = o.used;
    helper[key].instances  = o.instances;
  }

  return r;
}, []);

console.log(result);

यह समाधान वस्तुओं को आकार और रंग के आधार पर कुशलतापूर्वक समूहित करता है, डुप्लिकेट ऑब्जेक्ट के लिए उनके उपयोग किए गए और इंस्टेंस मानों को एकत्रित करता है, और किसी भी शेष डुप्लिकेट को हटा देता है, जिसके परिणामस्वरूप वांछित आउटपुट मिलता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3