InterviewHubPRO
Section Overview
Q498

Question 498 of 521

Part 8: Modern JavaScript APIs, WeakRef, Proxy & Performance (464 - 521)

96%
JavaScript Internals (521 Qs)•Part 8: Modern JavaScript APIs, WeakRef, Proxy & Performance (464 - 521)

What is the difference between Object.keys(), Object.values(), and Object.entries()?

These three methods extract different parts of an object's own enumerable properties:

javascript
 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:

  1. Object.keys() for iteration:
javascript
    Object.keys(person).forEach(key => {
      console.log(`${key}: ${person[key]}`);
    });
  1. Object.values() for value processing:
javascript
    const sum = Object.values({ a: 1, b: 2, c: 3 })
      .reduce((acc, val) => acc + val, 0); // 6
  1. Object.entries() for Map conversion:
javascript
    const map = new Map(Object.entries(person));
    
    // Or converting back from Map to Object
    const obj = Object.fromEntries(map);
  1. Object.entries() for filtering:
javascript
    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.