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

JavaScript में ऑब्जेक्ट्स की ऐरे को सिंगल ऑब्जेक्ट में फ्लैट करने का सबसे सरल समाधान?

reduce() मेथड के साथ स्प्रेड ऑपरेटर (...) का उपयोग करके ऑब्जेक्ट्स की ऐरे को सिंगल मर्ज्ड ऑब्जेक्ट में बदलें।

बुनियादी उदाहरण

const studentDetails = [
    { Name: "Chris" },
    { Age: 22 },
    { City: "New York" }
];

// reduce से मर्ज करें
const merged = studentDetails.reduce((acc, obj) => {
    return { ...acc, ...obj };
}, {});

console.log(merged);
// { Name: 'Chris', Age: 22, City: 'New York' }

संक्षिप्त रूप (एरो फंक्शन)

const merged = studentDetails.reduce((acc, obj) => ({ ...acc, ...obj }), {});

Object.assign() विकल्प

// Object.assign के साथ (ES6)
const merged = Object.assign({}, ...studentDetails);
console.log(merged); // समान परिणाम

डुप्लीकेट कीज़ हैंडलिंग

बाद के ऑब्जेक्ट्स पहले वालों को ओवरराइट करते हैं:

const data = [
    { id: 1, name: "First" },
    { id: 2, name: "Second" },
    { id: 1, name: "Duplicate ID" }  // id: 1 ओवरराइट होगा
];

const merged = data.reduce((acc, obj) => ({ ...acc, ...obj }), {});
console.log(merged); // { id: 1, name: 'Duplicate ID' }

नेस्टेड ऑब्जेक्ट्स के लिए डीप मर्ज (एडवांस्ड)

function deepMerge(target, source) {
    const result = { ...target };
    for (const key of Object.keys(source)) {
        if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
            result[key] = deepMerge(target[key] || {}, source[key]);
        } else {
            result[key] = source[key];
        }
    }
    return result;
}

const nested = [
    { user: { name: "John", address: { city: "NYC" } } },
    { user: { age: 30, address: { zip: "10001" } } }
];

const merged = nested.reduce((acc, obj) => deepMerge(acc, obj), {});
console.log(merged);
// { user: { name: 'John', age: 30, address: { city: 'NYC', zip: '10001' } } }

चलाने का तरीका

node flatten-objects.js

आउटपुट

{ Name: 'Chris', Age: 22, City: 'New York' }

कौन सा उपयोग करें?

विधिपक्षविपक्ष
reduce + spreadपठनीय, फ्लेक्सिबलथोड़ा धीमा
Object.assignतेज़, बुनियादीडीप मर्ज नहीं
lodash.mergeडीप मर्ज, मजबूतबाहरी निर्भरता

सिफारिश

सरल फ्लैट मर्ज के लिए: Object.assign({}, ...array) सबसे तेज़ और संक्षिप्त है।

  1. जावास्क्रिप्ट में ऑब्जेक्ट्स को सिंगल ऑब्जेक्ट ऐरे में मर्ज कैसे करें? जावास्क्रिप्ट में ऑब्जेक्ट्स को सिंगल ऑब्जेक्ट ऐरे में मर्ज कैसे करें?

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

  1. JavaScript में फ्लैट ऑब्जेक्ट सरणी को ट्री में बदलना JavaScript में फ्लैट ऑब्जेक्ट सरणी को ट्री में बदलना

    मान लीजिए, हमारे पास ऑब्जेक्ट की एक सरणी है जैसे - const arr = [ { id: 1, name: name 1, parentId: null }, { id: 2, name: name 2, parentId: null }, { id: 2_1, name: name 2_1, parentId: 2 }, { id: 2_2, name: name 2_2, parentId: 2 }, { id: 3, name: name 3, parentId: null }, { i

  1. - JavaScript में ऑब्जेक्ट्स की सरणी को साधारण ऑब्जेक्ट में बदलना

    मान लीजिए हमारे पास ऑब्जेक्ट्स की एक सरणी है जैसे - const arr = [{ name: Dinesh Lamba, age: 23, occupation: Web Developer, }, { address: Vasant Vihar, experience: 5, isEmployed: true }]; हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसी ऑब्जेक्ट्स की सरणी लेता है। फ़ंक्शन को फिर एक ऑब्जेक्ट तै