如何归档一组必须满足javascript中所有条件的记录

如何归档一组必须满足javascript中所有条件的记录,javascript,Javascript,我有一组对象,这些对象上有一些基于选定对象的可过滤信息 我有以下内容,希望在selected中的键上迭代,只返回满足所有条件的项(在本例中,用户Amber,tagId为12,placementId为27) 一个警告是,如果所选的过滤器等于null,则应将其从过滤中排除,因为这意味着用户没有按该过滤器进行过滤 这将增长到8个过滤器,所以不想做一些大的if语句。我怎么能这样做 var selected = {}; selected["tagId"] = 12; selected["placement

我有一组对象,这些对象上有一些基于选定对象的可过滤信息

我有以下内容,希望在
selected
中的键上迭代,只返回满足所有条件的项(在本例中,用户
Amber
,tagId为12,placementId为27)

一个警告是,如果所选的
过滤器等于null,则应将其从过滤中排除,因为这意味着用户没有按该过滤器进行过滤

这将增长到8个过滤器,所以不想做一些大的if语句。我怎么能这样做

var selected = {};
selected["tagId"] = 12;
selected["placementId"] = 27;
selected["locationId"] = null;

var users = [];
users.push({"name":"Joe", "tagIds":[3,4,12], "placementIds": [2,19]});
users.push({"name":"Suzy", "tagIds":[3,4], "placementIds": [2,19, 27]});
users.push({"name":"Amber", "tagIds":[1,12], "placementIds": [2,19, 27]});

function filterBySelected(items){
    var hits = [];
    console.log('within filter by Selected');
    console.log(items);
    for (var key in selected){
        if(selected[key]){ // 
            console.log('you are filtering by: ' + key);
        }
    }
    return hits;
}
var items = filterBySelected(users);
// items should return user object of "Amber"
您可以使用
Array#filter
Object.entries
(或它的多边形填充),如下所示:

var selected={tagId:12,placementId:27};
变量用户=[
{“name”:“Joe”,“tagid”:[3,4,12],“placementid”:[2,19]},
{“name”:“Suzy”,“tagid”:[3,4],“placementid”:[2,19,27]},
{“name”:“Amber”,“tagid”:[1,12],“placementid”:[2,19,27]}
];
已选择功能过滤器(项){
返回项目。筛选器(项目=>
Object.entries(选中)。every([k,v])=>
v==null | | |(项目[k+“s”]| |[])。包括(v)
)
);
}
var项目=过滤器被选中(用户);
控制台日志(项目)

.as控制台包装{max height:100%!important;top:0;}
很酷-这看起来不错(我有点不可思议)!我需要为浏览器填充这个吗?另外,若我只想按不为null的项进行筛选(对不起,应该在原始问题中包括这一点),该怎么办。假设我们在所选对象中也有一个
locationId:null
,并且不希望将它们形成为locationId等于null?取决于您需要的浏览器支持?支持的范围越来越广。经常看到底部(例外)。我在
null
(当所选值为
undefined
)时也会使用相同的额外条件。这看起来很棒。thx-现在正在路上,但非常感谢。祝你周末愉快!你总是在数组中搜索吗?或者有没有像
“teamId”:20
这样的项目需要过滤?