Array & Object Methods
Object Methods
Object.keys, values, entries
💡 Object.keys/values/entries ek filing cabinet ko teen alag tarikon se dekhna hai — sirf drawer labels (keys), sirf files ka content (values), ya dono ek saath (entries, label+content pairs).
Object.keys(obj) saari PROPERTY NAMES ka array deta hai. Object.values(obj) saari VALUES ka array. Object.entries(obj) [key, value] pairs ka array deta hai — for...of ke saath combine karke bahut clean iteration milta hai.
const person = { name: "Aarav", age: 20, city: "Mumbai" };
console.log(Object.keys(person)); // ["name", "age", "city"]
console.log(Object.values(person)); // ["Aarav", 20, "Mumbai"]
console.log(Object.entries(person)); // [["name","Aarav"], ["age",20], ["city","Mumbai"]]
// entries() + destructuring — bahut clean:
for (const [key, value] of Object.entries(person)) {
console.log(key + ": " + value);
}
// Objects par array methods bhi indirectly use ho sakte hain:
const upperKeys = Object.keys(person).map(k => k.toUpperCase());
console.log(upperKeys); // ["NAME", "AGE", "CITY"]🗝️
Object.keys/values/entries ek filing cabinet ko teen alag tarikon se dekhna hai — sirf drawer labels (keys), sirf files ka content (values), ya dono ek saath (entries, label+content pairs).
1 / 2
⚡ झट से Recap
- Object.keys() = property names array, Object.values() = values array
- Object.entries() = [key,value] pairs — for...of ke saath clean iteration
- for...in se zyada predictable — sirf own properties
इस page में (2 subtopics)
Object.freeze() object ko "immutable" bana deta hai — properties add/remove/modify NAHI ho sakti (silently fail, ya strict mode mein error). Accidental mutations se bachने ke liye useful.
const config = Object.freeze({ apiUrl: "https://api.example.com" });
config.apiUrl = "https://hacked.com"; // silently fail (strict mode mein error)
console.log(config.apiUrl); // still original URL
console.log(Object.isFrozen(config)); // trueCommon Mistake: Object.freeze() sirf SHALLOW hai — agar object ke andar nested objects hain, wo abhi bhi mutable hain! Deep freeze ke liye recursive freezing chahiye (ya library use karo).
Object.assign(target, ...sources) objects ko merge karta hai — spread operator ({...obj1, ...obj2}) aane se pehle ye standard tareeka tha, abhi bhi widely used hai (especially target object ko directly mutate karna ho to).
const defaults = { theme: "light", lang: "en" };
const userPrefs = { lang: "hi" };
const merged = Object.assign({}, defaults, userPrefs);
console.log(merged); // { theme: "light", lang: "hi" }
// Spread operator (modern equivalent):
const merged2 = { ...defaults, ...userPrefs }; // same resultTip: Modern code mein spread ({...a, ...b}) usually Object.assign() se prefer kiya jaata hai (zyada concise), lekin Object.assign() ka pehla argument DIRECTLY mutate hota hai — kabhi-kabhi ye behavior specifically chahiye hota hai.