11

I have the following array in my Angular application:

enter image description here

Each element contains a supplier and one or more products.

How can I get a count of all the products that are returned?

I can get the products themselves by doing this:

array.map(x=>x.products)

And I can get a count of the products for each element by doing this:

array.map(x=>x.products.length)

But how do I then sum that?

2
  • how deeply nested can it be? Commented May 13, 2019 at 16:31
  • Whatever it is make a var and make it increase on each iteration as well as inside iteration. Not that much tough. Commented May 13, 2019 at 16:32

1 Answer 1

22

You can use reduce to handle this.

const totalProducts = arr.reduce((count, current) => count + current.products.length, 0);

The concept of reduce is to take an array and "reduce" it down to a single entity. That entity can be an object, another array, number...

The 0 at the end initializes the reduce entity. Since you are going for a sum, set it to 0 and then add to it.

Sign up to request clarification or add additional context in comments.

1 Comment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.