lodash - How to filter array of objects from keys in javascript? -
here, have 1 main array called mainarray
. in array added multiple users list. can increased. can create many group mainarray
, group1, group2 , on. requirement is, want filter objects mainarray
, haven't added in groups.
array main,
var mainarray = [{ userid: "m000001", name: "jhon", companyid: "c0000021" }, { userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }, { userid: "m000006", name: "roldan", companyid: "c0000026" }, { userid: "m000007", name: "mike", companyid: "c0000027" }, { userid: "m000008", name: "mia", companyid: "c0000028" }];
groups,
var group1 = [{ userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }]; var group2 = [{ userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000001", name: "john", companyid: "c0000021" }];
joined group ids,
var joinedgroupids = ["m000004", "m000005", "m000002", "m000003", "m000001"];
the output want be,
var result = [{ { userid: "m000006", name: "roldan", companyid: "c0000026" }, { userid: "m000007", name: "mike", companyid: "c0000027" }, { userid: "m000008", name: "mia", companyid: "c0000028" } }];
my javascript code,
var joingroup, joinedgroupids = []; joingroup = group1.concat(group2);
concatinated group ids,
joinedgroupids.map(function(el){ joinedgroupids.push(el.userid); });
filter objects main array,
var result = mainarray.filter(function(item) { if (joinedgroupids.indexof(item.userid) !== -1) return item; });
indexof
not work searching inside arrays. use .findindex
var result = mainarray.filter(function(x) { return joinedgroup.findindex(function(y) { return y.userid === x.userid }) === -1 })
var mainarray = [{ userid: "m000001", name: "jhon", companyid: "c0000021" }, { userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }, { userid: "m000006", name: "roldan", companyid: "c0000026" }, { userid: "m000007", name: "mike", companyid: "c0000027" }, { userid: "m000008", name: "mia", companyid: "c0000028" }]; var group1 = [{ userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }]; var group2 = [{ userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000001", name: "john", companyid: "c0000021" }]; var joinedgroup = group1.concat(group2); var result = mainarray.filter(function(x) { return joinedgroup.findindex(function(y) { return y.userid === x.userid }) === -1 }) console.log(result)
save userids
in joinedgroup
var joinedgroup = []; group1.foreach(x => joinedgroup.push(x.userid)) group2.foreach(x => joinedgroup.push(x.userid)) var result = mainarray.filter(function(x) { return joinedgroup.indexof(x.userid) === -1 })
var mainarray = [{ userid: "m000001", name: "jhon", companyid: "c0000021" }, { userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }, { userid: "m000006", name: "roldan", companyid: "c0000026" }, { userid: "m000007", name: "mike", companyid: "c0000027" }, { userid: "m000008", name: "mia", companyid: "c0000028" }]; var group1 = [{ userid: "m000004", name: "sean", companyid: "c0000024" }, { userid: "m000005", name: "paul", companyid: "c0000025" }]; var group2 = [{ userid: "m000002", name: "leon", companyid: "c0000022" }, { userid: "m000003", name: "thomas", companyid: "c0000023" }, { userid: "m000001", name: "john", companyid: "c0000021" }]; var joinedgroup = []; group1.foreach(x => joinedgroup.push(x.userid)) group2.foreach(x => joinedgroup.push(x.userid)) var result = mainarray.filter(function(x) { return joinedgroup.indexof(x.userid) === -1 }) console.log(result)
Comments
Post a Comment