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
| Structure | Key type | Order preserved? | Size property |
|---|---|---|---|
| Object | String/Symbol only | Mostly, with edge cases | No direct property, need Object.keys().length |
| Map | Any type (objects, functions, etc.) | Yes, insertion order | .size |
| Array | Numeric index only | Yes | .length |
| Set | N/A - stores unique values | Yes, 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);
}| Structure | Key type | Order? | Size |
|---|---|---|---|
| Object | सिर्फ String/Symbol | ज़्यादातर | Object.keys().length |
| Map | कोई भी type | हाँ, insertion order | .size |
| Set | Unique 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?