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

JavaScript में नेस्टेड ऑब्जेक्ट्स की ऐरे को अन-नेस्ट (फ्लैट) कैसे करें?

map() से नेस्टेड ऑब्जेक्ट की प्रॉपर्टीज को टॉप लेवल पर लाकर नई ऑब्जेक्ट्स की ऐरे बनाएं।

डेटा

const students = [
    {
        "studentId": 101,
        "studentName": "John",
        "subjectDetails": {
            "subjectName": "JavaScript"
        }
    },
    {
        "studentId": 102,
        "studentName": "David",
        "subjectDetails": {
            "subjectName": "MongoDB"
        }
    }
];

map() से अन-नेस्ट

const flattened = students.map(obj => ({
    studentId: obj.studentId,
    studentName: obj.studentName,
    subjectName: obj.subjectDetails.subjectName
}));

console.log(flattened);
/*
[
  { studentId: 101, studentName: 'John', subjectName: 'JavaScript' },
  { studentId: 102, studentName: 'David', subjectName: 'MongoDB' }
]
*/

डायनामिक प्रॉपर्टी नामों के साथ

function flattenObjects(arr, nestedKey, fieldsToExtract) {
    return arr.map(obj => {
        const nested = obj[nestedKey];
        const extracted = {};
        fieldsToExtract.forEach(field => {
            extracted[field] = nested[field];
        });
        // नेस्टेड कुंजी हटाएं, बाकी रखें
        const { [nestedKey]: _, ...rest } = obj;
        return { ...rest, ...extracted };
    });
}

const result = flattenObjects(students, 'subjectDetails', ['subjectName']);
console.log(result);

गहरी नेस्टिंग के लिए रिकर्सिव फ्लैट

function deepFlatten(obj, prefix = '') {
    return Object.entries(obj).flatMap(([key, value]) => {
        const newKey = prefix ? `${prefix}.${key}` : key;
        if (value && typeof value === 'object' && !Array.isArray(value)) {
            return deepFlatten(value, newKey);
        }
        return { [newKey]: value };
    });
}

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

const flat = Object.assign({}, ...deepFlatten(nested));
console.log(flat);
// { 'user.name': 'John', 'user.address.city': 'NYC', 'user.address.zip': '10001' }

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

node unnest-array.js

आउटपुट

[
  { studentId: 101, studentName: 'John', subjectName: 'JavaScript' },
  { studentId: 102, studentName: 'David', subjectName: 'MongoDB' }
]

संबंधित: flat() और flatMap()

// ऐरे फ्लैट करना (नेस्टेड ऐरे के लिए)
[[1,2], [3,4]].flat()           // [1,2,3,4]
[[1,2], [3,[4,5]]].flat(2)      // [1,2,3,4,5]

// map + flat = flatMap
[[1,2], [3,4]].flatMap(x => x)  // [1,2,3,4]
  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>  

  1. जावास्क्रिप्ट में Object.keys().map() बनाम Array.map() जावास्क्रिप्ट में Object.keys().map() बनाम Array.map()

    जावास्क्रिप्ट में Object.keys().map() और Array.map() दिखाने का कोड निम्नलिखित है - उदाहरण <!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>

  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>