What is the difference between Object.keys(), Object.values(), and Object.entries()?
Assesses fundamental understanding of JavaScript conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
These three methods extract different parts of an object's own enumerable properties:
const person = {
name: 'John',
age: 30,
city: 'New York'
};
// Object.keys() - returns array of property names
console.log(Object.keys(person));
// ['name', 'age', 'city']
// Object.values() - returns array of property values
console.log(Object.values(person));
// ['John', 30, 'New York']
// Object.entries() - returns array of [key, value] pairs
console.log(Object.entries(person));
// [['name', 'John'], ['age', 30], ['city', 'New York']]
Common use cases:
- Object.keys() for iteration:
Object.keys(person).forEach(key => {
console.log(`${key}: ${person[key]}`);
});
- Object.values() for value processing:
const sum = Object.values({ a: 1, b: 2, c: 3 })
.reduce((acc, val) => acc + val, 0); // 6
- Object.entries() for Map conversion:
const map = new Map(Object.entries(person));
// Or converting back from Map to Object
const obj = Object.fromEntries(map);
- Object.entries() for filtering:
const filtered = Object.fromEntries(
Object.entries(person).filter(([key, value]) =>
typeof value === 'string'
)
);
Note: All three methods only return own, enumerable properties, not inherited ones.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.