9

I understand that finding the length of a JS object has been answered extensively here

With one of the suggested solutions being Object.keys(myObj).length

However, I'm struggling to find out how can I find the length of all properties contained on an array of objects.

ie:

const users = [
  {
    firstName: "Bruce",
    lastName: "Wayne",
    id: "1",
  },

  {
    firstName: "Peter",
    lastName: "Parker",
    id: "2"
  },

  {
    firstName: "Tony",
    lastName: "Stark",
    id: "3"
  }
];

Object.keys(users).length //3

Given the example above, How can I output a length of 9 retrieving all the properties on the array of objects?

Could this be done using a reduce method? Thanks in advance.

Null isTrue
  • 1,882
  • 6
  • 26
  • 46

1 Answers1

9

Yes, reduce is the appropriate method - on each iteration, add the number of keys of the current object to the accumulator to sum up the keys of every item:

  const users = [
  {
    firstName: "Bruce",
    lastName: "Wayne",
    id: "1",
  },

  {
    firstName: "Peter",
    lastName: "Parker",
    id: "2"
  },

  {
    firstName: "Tony",
    lastName: "Stark",
    id: "3"
  }
];

const totalProps = users.reduce((a, obj) => a + Object.keys(obj).length, 0);
console.log(totalProps);
Null isTrue
  • 1,882
  • 6
  • 26
  • 46
CertainPerformance
  • 356,069
  • 52
  • 309
  • 320