Object.entries() Method

  • Code
  • JavaScript
  • Object Method
  • Object Methods

Object.entries() also goes hand in hand with the Object.keys() and Object.values() methods. However, where each of those methods returned an array of keys or values respectively, for each [key, value] pair in an object, Object.entries() will return an array of...well, [key, value]. Let's check it out. Once again I'll be using the same examples from Object.keys() and Object.values().

const person = {  name: "Joey",  age: 31,  occupation: "Web Developer",  location: "Austin, Texas",  hungry: true,};
const objEntries = Object.entries(person);console.log(objEntries);// expected output:// [["name", "Joey"], ["age", 31], ["occupation", "Web Developer"], ["location", "Austin, Texas"], ["hungry", true]]

If Object.values() is the contents of the box, and Object.keys() is the tape that holds the box together, then Object.entries() is the whole box. It gives us a way to iterate over the entire data object, including both keys and values. And it does so in a way that some might find easier to read than a for...in loop.

The above code produces the same result as this for...in loop:

let loopedEntries = [];for (entry in person) {  loopedEntries.push([entry, person[entry]]);}console.log(loopedEntries);// expected output:// [["name", "Joey"], ["age", 31], ["occupation", "Web Developer"], ["location", "Austin, Texas"], ["hungry", true]]

As with Object.keys() and Object.values(), one should be on the lookout for numeric keys and the order in which they are output:

const obj = {  5: "Giraffe",  70: "Octopus",  17: "Lion",  1: "Armadillo",  0: "Puffin",};
const objEntries = Object.entries(obj);console.log(objEntries);// expected output:// [["0", "Puffin"], ["1", "Armadillo"], ["5", "Giraffe"], ["17", "Lion"], ["70", "Octopus"]]

And lastly, if you run Object.entries() against a simple array, you get arrays with both the indices and the values:

const colors = ["red", "orange", "yellow", "green", "blue", "violet"];
const objEntries = Object.entries(colors);console.log(objEntries);// expected output:// [["0", "red"], ["1", "orange"], ["2", "yellow"], ["3", "green"], ["4", "blue"], ["5", "violet"]]

From MDN: The Object.entries() method returns an array of a given object's own enumerable string-keyed property [key, value] pairs, in the same order as that provided by a for...in loop (the difference being that a for...in loop enumerates properties in the prototype chain as well).

See more examples and documentation here.