与Map结合使用后,Array过滤器功能的行为发生了变化

时间:2019-02-07 02:19:59

标签: javascript typescript

我有一个对象数组和一个映射,需要根据用户输入过滤该数组,所有用户输入都保存到一个映射中,之后它将过滤该数组并显示结果。我的代码如下。

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;
});

这种方法行不通。任何人都可以帮我这个忙..

1 个答案:

答案 0 :(得分:0)

尝试

let results = items.filter(element => map.keys().every(key => element[key] === map[key]);

过滤器返回一个新数组,并且您没有将过滤器的结果存储在任何地方,原始数组未受影响。