Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Question 7 of 10 · ES6+ Features
Interview question

What are Map and Set in JavaScript, and how do they differ from plain objects and arrays? JavaScript में Map और Set क्या हैं, और plain objects/arrays से कैसे अलग हैं?

Answer
StructureKey typeOrder preserved?Size property
ObjectString/Symbol onlyMostly, with edge casesNo direct property, need Object.keys().length
MapAny type (objects, functions, etc.)Yes, insertion order.size
ArrayNumeric index onlyYes.length
SetN/A - stores unique valuesYes, insertion order.size
// MAP - key-value pairs with ANY key type
const userRoles = new Map();
const userObj = { id: 1 };

userRoles.set('john', 'admin');
userRoles.set(userObj, 'editor'); // object as a key - impossible with plain objects

console.log(userRoles.get('john')); // admin
console.log(userRoles.get(userObj)); // editor
console.log(userRoles.size); // 2

// Iterating a Map
for (const [key, value] of userRoles) {
    console.log(key, value);
}

userRoles.has('john'); // true
userRoles.delete('john');

// Converting Map to array
const entries = [...userRoles]; // [[key, value], ...]

// SET - collection of unique values
const uniqueNumbers = new Set([1, 2, 2, 3, 3, 3]);
console.log(uniqueNumbers); // Set { 1, 2, 3 } - duplicates removed
console.log(uniqueNumbers.size); // 3

uniqueNumbers.add(4);
uniqueNumbers.has(2); // true
uniqueNumbers.delete(1);

// Practical use: removing duplicates from an array
const arr = [1, 2, 2, 3, 3, 4];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4]

// Iterating a Set
for (const value of uniqueNumbers) {
    console.log(value);
}
StructureKey typeOrder?Size
Objectसिर्फ String/Symbolज़्यादातरObject.keys().length
Mapकोई भी typeहाँ, insertion order.size
SetUnique valuesहाँ.size
// MAP - key-value pairs, कोई भी key type
const userRoles = new Map();
const userObj = { id: 1 };

userRoles.set('john', 'admin');
userRoles.set(userObj, 'editor'); // object key - plain object में impossible

console.log(userRoles.get('john')); // admin
console.log(userRoles.size); // 2

// Map iterate करना
for (const [key, value] of userRoles) {
    console.log(key, value);
}

userRoles.has('john'); // true
userRoles.delete('john');

// SET - unique values का collection
const uniqueNumbers = new Set([1, 2, 2, 3, 3, 3]);
console.log(uniqueNumbers); // Set { 1, 2, 3 }
console.log(uniqueNumbers.size); // 3

uniqueNumbers.add(4);
uniqueNumbers.has(2); // true

// Array से duplicates हटाना
const arr = [1, 2, 2, 3, 3, 4];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4]

Was this answer clear?