deepIndexOf Array prototype
Search an array of objects for an item that matches the given property value
by Matthew Marcus
JavaScript
if(typeof Object.keys !== 'function'){
Object.prototype.keys = function(obj){
var keys = [];
for(var key in obj){
keys.push(key);
}
return keys;
}
}
Object.prototype.entries = function(){
var
keys = Object.keys(this),
entries = [];
for (var i = 0; i < keys.length; i++){
entries.push({
key: keys[i],
value: this[keys[i]]
});
}
return entries;
};
Array.prototype.deepIndexOf = function(searchObj) {
var
retVal = -1,
self = this,
searchEntries = searchObj.entries()[0];
for(var index=0; index < self.length; index++){
var item = self[index];
if (item.hasOwnProperty(searchEntries.key)) {
if (item[searchEntries.key] === searchEntries.value) {
retVal = index;
return retVal;
}
}
};
return retVal;
};
var arr = [
{
a: 1,
b: 2
},
{
a: 3,
b: 4
},
{
a: 5,
b: 6
},
{
a: 7,
b: 8
}
];
console.log(arr.deepIndexOf({a:5}));
console.log(arr.deepIndexOf({b:5}));