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

JavaScript में सरणी की सरणी को ऑब्जेक्ट की सरणी में समूहित करके बदलें


मान लीजिए हमारे पास एक दो-आयामी सरणी है जिसमें कुछ रंगों और फलों के बारे में डेटा है, जैसे:

const data = [
  ['orange', 'fruit'],
  ['red', 'color'],
  ['green', 'color'],
  ['orange', 'color'],
  ['banana', 'fruit'],
  ['blue', 'color'],
  ['lemon', 'fruit'],
  ['mango', 'fruit'],
  ['lemon', 'color'],
];

हमें एक फ़ंक्शन लिखना है जो इस सरणी को लेता है और एक ऐसी सरणी लौटाता है जिसमें विभिन्न फल और रंग उनकी श्रेणियों के अनुसार समूहित हों।

इस उदाहरण में हमारे पास केवल दो श्रेणियाँ हैं - 'fruit' और 'color', इसलिए आउटपुट में दो ऑब्जेक्ट की सरणी होनी चाहिए:

[
  {
    group: 'fruit',
    value: ['orange', 'banana', 'lemon', 'mango']
  },
  {
    group: 'color',
    value: ['red', 'green', 'orange', 'blue', 'lemon']
  }
]

नोट - इस उदाहरण में केवल दो श्रेणियाँ हैं, लेकिन हमें एक ऐसा समाधान लिखना है जो गतिशील संख्या में श्रेणियों के लिए काम करे, न कि केवल दो के लिए।

समाधान

हम Array.prototype.reduce() मेथड का उपयोग करेंगे। प्रत्येक उप-सरणी के लिए हम जाँचेंगे कि क्या वह समूह पहले से मौजूद है। यदि हाँ, तो हम उसके value गुण में नया मान जोड़ देंगे; अन्यथा हम उस समूह के लिए एक नया ऑब्जेक्ट बनाकर सरणी में जोड़ देंगे।

उदाहरण

const data = [
  ['orange', 'fruit'],
  ['red', 'color'],
  ['green', 'color'],
  ['orange', 'color'],
  ['banana', 'fruit'],
  ['blue', 'color'],
  ['lemon', 'fruit'],
  ['mango', 'fruit'],
  ['lemon', 'color'],
];

const groupData = arr => {
  return arr.reduce((acc, val) => {
    const [value, groupName] = val;
    const groupIndex = acc.findIndex(el => el?.group === groupName);
    if (groupIndex !== -1) {
      acc[groupIndex].value.push(value);
    } else {
      acc.push({
        group: groupName,
        value: [value]
      });
    }
    return acc;
  }, []);
};

console.log(groupData(data));

आउटपुट

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

[
  { group: 'fruit', value: ['orange', 'banana', 'lemon', 'mango'] },
  { group: 'color', value: ['red', 'green', 'orange', 'blue', 'lemon'] }
]

  1. जावास्क्रिप्ट में एरे को सेट में कैसे कन्वर्ट करें? जावास्क्रिप्ट में एरे को सेट में कैसे कन्वर्ट करें?

    जावास्क्रिप्ट में एरे को सेट में कन्वर्ट करने के लिए कोड निम्नलिखित है: उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style> body { &nb

  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 /> <title>Document</title> <s