JavaScript JavaScript Loops, Arrays and Objects Tracking Multiple Items with Arrays Useful Array Methods

Taylor Council
Taylor Council
4,101 Points

Is indexOf a greedy solution for finding an array index?

I am wondering if there is a way to get all the indices in an array. For example when I add an additional apples item in this arr:

var inStock = [ 'apples', 'eggs', 'milk', 'apples']; var search;

console.log(inStock.indexOf('apples'));

The result only shows the first instance of the apples [0].

devina christabela
devina christabela
12,525 Points

indexOf only return the first occurrence from an array.. As far as I know, you need to loop the array and check one by one to find all index array which have same value, you can try with:

  • for loop and if with array or
  • reduce with initial value of [] or
  • map and filter

1 Answer

Steven Parker
Steven Parker
181,132 Points

I think you might best achieve what you describe using "reduce" (one of devine's suggestions):

console.log(inStock.reduce((a,c,i) => c=="apples" ? [...a, i] : a, []));