我有一个对象数组和一个映射,需要根据用户输入过滤该数组,所有用户输入都保存到一个映射中,之后它将过滤该数组并显示结果。我的代码如下。
let items:table = [
{
userId = "201",
host = "stable",
ip = "123.43.23.89"
},
{
userId = "202",
host = "stable",
ip = "123.43.23.99"
}
];
let map = this.getResult();//returns a Map, keys are same as array's object attributes.
//[key="userId ", value="201"],
//[key="host", value="stable"],
//[key="id", value="123.43.23.89"],
let flag = true;
items.filter(element =>{
for(let key of map.keys()){
flag = flag && element[key]==map[key];
}
return flag;
});
这种方法行不通。任何人都可以帮我这个忙..
答案 0 :(得分:0)
尝试
let results = items.filter(element => map.keys().every(key => element[key] === map[key]);
过滤器返回一个新数组,并且您没有将过滤器的结果存储在任何地方,原始数组未受影响。