简体   繁体   English

用键数组过滤对象数组[反]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM