【发布时间】:2018-08-09 01:09:26
【问题描述】:
试着思考我应该如何过滤一组对象并只返回满足所有标签的结果。
标签可以是任何字段 - fname/lname/email/position/etc
let search_tags = ['CEO', 'Steven'];
let contacts = [
{ fname: 'Steve', lname: 'Johnson', email: 'user@domain.com', position: 'CEO' },
{ fname: 'James', lname: 'Laurence', email: 'boss@domain.com', position: 'CFO' }
]
let results = contacts.filter((contact) => {
if (search_tags.includes(contact.fname) ||
search_tags.includes(contact.lname) ... ) {
return contact;
}
}
为了简洁起见,我缩短了一些代码,显然这个解决方案将返回与 any search_tag 匹配的联系人,但是...我只需要返回满足 every 的结果强>search_tag.
这是漫长的一天,我没有人可以谈论这件事,所以我希望有人能够指出我正确的方向或给我那个啊哈!那一刻我我希望:)
提前致谢!
【问题讨论】:
-
使用 && 而不是 ||
-
如果您只是希望被指向正确的方向:将 search_tags 转换为
Set对象,然后为联系人中的每个对象创建一组字段值,然后进行设置交集或对称差。如果您需要帮助,请告诉我们。
标签: javascript arrays filtering javascript-objects