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