[英]Filter objects array with keys array [inverse]
I have this following keys array: 我有以下键数组:
var keys = [{userId: "333"}, {userId: "334"}]
And this objects array: 这个对象数组:
var users = [
{id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""}
]
I need to change my users Array
by filter it with my keys Array
[inverse result]. 我需要通过使用keys Array
[inverse result]对其进行过滤来更改users Array
。
Cant figure it out, get all the answers! 不能弄清楚,得到所有答案! (js, jquery, angular) (js,jquery,角度)
Anyone? 任何人?
You can use filter()
and find()
. 您可以使用filter()
和find()
。
var users = [ {id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""} ] var keys = [{userId: "333"}, {userId: "334"}] var result = users.filter(function(o) { return !keys.find(function(e) { return e.userId == o.id }) }) console.log(result)
You can have an array of id
s and then you can just check for availability in this list 您可以有一个id
数组,然后可以在此列表中检查可用性
var users = [ {id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""}, {id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""} ] var keys = [{userId: "333"}, {userId: "334"}] var idList = keys.map(function(x){ return x.userId}); var r = users.filter(function(x){ return idList.indexOf(x.id) < 0 }) console.log(r)
You could use a hash table for filtering. 您可以使用哈希表进行过滤。
var keys = [{ userId: "333" }, { userId: "334" }], users = [{ id: "333", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "334", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "335", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "336", firstName: "", lastName: "", idCard: "", birthDate: "" }], filtered = users.filter(function (a) { return !this[a.id]; }, keys.reduce(function (r, a) { r[a.userId] = true; return r; }, Object.create(null))); console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.