In an array of objects, fastest way to find the index of an object whose attributes match a search
arrays, indexof, javascript
Solution
Maybe you would like to use higher-order functions such as "map". Assuming you want search by 'field' attribute:
var elementPos = array.map(function(x) {return x.id; }).indexOf(idYourAreLookingFor);
var objectFound = array[elementPos];
Problem
I've been surfing around a little trying to find an efficient way to do this, but have gotten nowhere. I have an array of objects that looks like this: ``` array[i].id = some number; array[i].name = some name; ``` What I want to do is to find the INDEXES of the objects where id is equal to, for example, one of 0,1,2,3 or 4. I suppose I could just do something like : ``` var indexes = []; for(i=0; i<array.length; i++) { (array[i].id === 0) ? { indexes[0] = i } (array[i].id === 1) ? { indexes[1] = i } (array[i].id === 2) ? { indexes[2] = i } (array[i].id === 3) ? { indexes[3] = i } (array[i].id === 4) ? { indexes[4] = i } } ``` While this would work, it looks to be quite expensive and slow (not to mention ugly), especially if array.length could be large. Any ideas on how to spruce this up a bit? I thought of using array.indexOf somehow but I don't see how to force the syntax. This ``` array.indexOf(this.id === 0); ``` for example, returns undefined, as it probably should.