Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में सरणी में मानों को दो गुणों के आधार पर समूहित करना


हमारे पास ऑब्जेक्ट की एक सरणी है:

const arr = [
  { value: 12, gap: 1 },
  { value: 13, gap: 1 },
  { value: 14, gap: 1 },
  { value: 15, gap: 1 },
  { value: 19, gap: 2 },
  { value: 21, gap: 1 },
  { value: 22, gap: 1 },
  { value: 23, gap: 1 },
  { value: 27, gap: 1 },
  { value: 31, gap: 4 },
  { value: 35, gap: 4 },
  { value: 39, gap: 4 },
  { value: 43, gap: 1 },
  { value: 50, gap: 1 },
  { value: 51, gap: 1 },
  { value: 52, gap: 1 },
  { value: 55, gap: 1 },
  { value: 57, gap: 1 },
];

हमें एक फ़ंक्शन लिखना है जो इस सरणी को लेता है और एक नई सरणी लौटाता है जहाँ वे सभी लगातार ऑब्जेक्ट जिनका मान पिछले ऑब्जेक्ट के मान और gap के योग के बराबर है, एक उप-सरणी में एक साथ समूहीकृत हों।

उदाहरण के लिए - मान 12 वाले ऑब्जेक्ट का gap 1 है और इसका अगला ऑब्जेक्ट मान 13 का है, इसलिए उन्हें समूहीकृत किया जाना चाहिए और उनके साथ मान 14 और 15 वाले ऑब्जेक्ट भी, और इसी तरह।

अब, समस्या समझने के बाद, आइए इस समस्या के लिए कोड लिखते हैं। हम वांछित सरणी का निर्माण करने के लिए Array.prototype.reduce() मेथड का उपयोग करेंगे:

उदाहरण

const arr = [
  { value: 12, gap: 1 },
  { value: 13, gap: 1 },
  { value: 14, gap: 1 },
  { value: 15, gap: 1 },
  { value: 19, gap: 2 },
  { value: 21, gap: 1 },
  { value: 22, gap: 1 },
  { value: 23, gap: 1 },
  { value: 27, gap: 1 },
  { value: 31, gap: 4 },
  { value: 35, gap: 4 },
  { value: 39, gap: 4 },
  { value: 43, gap: 1 },
  { value: 50, gap: 1 },
  { value: 51, gap: 1 },
  { value: 52, gap: 1 },
  { value: 55, gap: 1 },
  { value: 57, gap: 1 },
];

const groupArray = arr => {
  return arr.reduce((acc, val, ind, array) => {
    const { data, currentIndex } = acc;
    const { value, gap } = val;
    const v = arr[ind - 1]?.value;
    const g = arr[ind - 1]?.gap;
    if (ind === 0 || value !== v + g) {
      const index = data.push([val]) - 1;
      return { data, currentIndex: index };
    }
    data[currentIndex].push(val);
    return { data, currentIndex };
  }, {
    data: [],
    currentIndex: 0
  }).data;
}

console.log(groupArray(arr));

आउटपुट

कंसोल में आउटपुट होगा:

[
  [
    { value: 12, gap: 1 },
    { value: 13, gap: 1 },
    { value: 14, gap: 1 },
    { value: 15, gap: 1 }
  ],
  [
    { value: 19, gap: 2 },
    { value: 21, gap: 1 },
    { value: 22, gap: 1 },
    { value: 23, gap: 1 }
  ],
  [ { value: 27, gap: 1 } ],
  [
    { value: 31, gap: 4 },
    { value: 35, gap: 4 },
    { value: 39, gap: 4 },
    { value: 43, gap: 1 }
  ],
  [
    { value: 50, gap: 1 },
    { value: 51, gap: 1 },
    { value: 52, gap: 1 }
  ],
  [ { value: 55, gap: 1 } ],
  [ { value: 57, gap: 1 } ]
]

  1. JavaScript array.values() मेथड JavaScript array.values() मेथड

    JavaScript array.values() एक इटरेटर ऑब्जेक्ट लौटाता है जिसमें दिए गए ऐरे के सभी मान होते हैं। उदाहरण { fillEle.innerHTML = ; for (let x of arr.values()) { fillEle.innerHTML += x + </br>; } }); </script> </body> </html> आउटपुट यहां क

  1. JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर कैसे ग्रुप करें? JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर कैसे ग्रुप करें?

    JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर ग्रुप करने का निम्नलिखित कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <

  1. जावास्क्रिप्ट में वैल्यू के आधार पर ऑब्जेक्ट्स को ग्रुप कैसे करें? जावास्क्रिप्ट में वैल्यू के आधार पर ऑब्जेक्ट्स को ग्रुप कैसे करें?

    जावास्क्रिप्ट में वैल्यू के आधार पर ऑब्जेक्ट्स को ग्रुप करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /&g