Filtering Array Of Objects Based On Value
Is there a way to filter an array of objects by a particular value that could be in any property? Let's say I have this object: var x = [ { name: 'one', swp: 't
Solution 1:
var arrOfObj = []; // objects you're sifting
var prop = 'whatever';
var matches = arrOfObj.filter(obj => Object.keys(obj).some(k => obj[k] === prop));
You want a combination of Array.prototype.filter
and Array.prototype.some
which returns a boolean if any of the elements of the array match the condition, it also stops iterating the array (in this case the keys of each object) as soon as it finds a match. If you need cross-browser support (and for some reason aren't using babel) the ES 5 version of the above is
var arrOfObj = []; // objects you're siftingvar prop = 'whatever';
var matches = arrOfObj.filter(function(obj) {
returnObject.keys(obj).some(function(k) {
return obj[k] === prop;
});
});
Solution 2:
Well the obvious thing is to combine your for..in
loop with your .filter()
function:
var x = [{name: "one", swp: "two"}, {name: "two", swp: "three"}, { name: "aa", swp: "bb"}];
var filtered = x.filter(function(v) {
for (var k in v)
if (v[k] === "two") returntrue;
});
console.log(filtered);
Solution 3:
use an inner loop method to check individual property values
var val ="one";
var res = x.filter(function(item){
returnObject.keys(item).some(function(prop){
return item[prop] === val;
});
});
Post a Comment for "Filtering Array Of Objects Based On Value"