What's the best method to get the index of an object in an object array given multiple of it's properties?
Imagine the following example array:
var array = [
{
color: 'red',
shape: 'square',
weight: 200
},
{
color: 'blue',
shape: 'circle',
weight: 300
},
{
color: 'red',
shape: 'circle',
weight: 100
}
];
Now I would like to have the indexOf the object which color property is red and shape is circle which, in this example, would be 2.
Ideally the function would return the index of the object when a subset of its properties is given like {color: 'red', shape: 'circle'} and return -1 if no index is found.
In ES6, there is the array method findIndex:
let index = array.findIndex(
element => element.color === 'red' && element.shape === 'circle'
);
Until then, stick to a plain iteration:
var index = -1; // -1 if not found
for (var i = 0; i < array.length; ++i)
{
var element = array[i];
if (element.color === 'red' && element.shape === 'circle')
{
index = i;
break;
}
}
You can do this with map and combining the properties:
var index = array.map(function(o){return o.color + o.shape}).indexOf('red' + 'circle')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With