Angular 根据多个键筛选数组

Angular 根据多个键筛选数组,angular,typescript,Angular,Typescript,我有很多人知道他们的一些信息。 我想同时根据宗教信仰、性别和记录编号筛选此数组。有办法吗? 这里是人物阵列: { "Id": 1270, "FirstName": "name", "LastName": "last name", "Religion": "religion", "RecordNumber": 1, "Gender": "male", "Contacted": false, "NeedsTransportation":

我有很多人知道他们的一些信息。
我想同时根据宗教信仰、性别和记录编号筛选此数组。
有办法吗?

这里是人物阵列:

{
    "Id": 1270,
    "FirstName": "name",
    "LastName": "last name",
    "Religion": "religion",
    "RecordNumber": 1,
    "Gender": "male",
    "Contacted": false,
    "NeedsTransportation": false,
    "WhenContacted": null,
    "ContactedByWho": null,
    },
     {
     "Id": 1383,
     "FirstName": "name",
     "LastName": "last name",
     "Religion": "religion",
     "RecordNumber": 1,
     "Gender": "male",
     "Contacted": false,
     "NeedsTransportation": false,
     "WhenContacted": null,
     "ContactedByWho": null
    },
    {
     "Id": 1394,
     "FirstName": "name",
     "LastName": "last name",
     "Religion": "religion",
     "RecordNumber": 1,
     "Gender": "male",
     "Contacted": false,
     "NeedsTransportation": false,
     "WhenContacted": null,
     "ContactedByWho": null,
    }

谢谢您的帮助。

使用
过滤器

const people: Person[] = [...];
people.filter(p => {
   return p.Religion === (...) // condition for religion
       && p.Gender === (...) // condition for gender
       && p.RecordNumber === (...); // condition for record number
});

当然,条件不必是相等比较,也不必使用and运算符。其思想是,
filter
方法将返回一个新数组,其中只包含作为参数传递的函数返回的
true
项。在内部,您可以进行任何需要的检查。

使用
过滤器

const people: Person[] = [...];
people.filter(p => {
   return p.Religion === (...) // condition for religion
       && p.Gender === (...) // condition for gender
       && p.RecordNumber === (...); // condition for record number
});

当然,条件不必是相等比较,也不必使用and运算符。其思想是,
filter
方法将返回一个新数组,其中只包含作为参数传递的函数返回的
true
项。你可以在里面做任何你需要的检查。

为什么你不能只做
过滤

 var filteredResult =   x.filter((x)=> (x.Id == 1394) && (x.Religion =="religion") && (x.Gender=="male") )

当然,您可以使用任何运算符,为要迭代的项提供布尔值true,以在结果数组中获取该项

为什么不能只执行
筛选

 var filteredResult =   x.filter((x)=> (x.Id == 1394) && (x.Religion =="religion") && (x.Gender=="male") )
当然,您可以使用任何运算符,为迭代的项提供布尔值true,以在结果数组中获取该项

let people=[{
“Id”:1270,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“宗教”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空,
},
{
“Id”:1383,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“宗教”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空
},
{
“Id”:1394,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“基督徒”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空,
}]
常量过滤器=(宗教、性别、记录编号)=>{
return people.filter(({宗教,性别,记录编号})=>宗教===宗教和性别===性别和+记录编号===+记录编号)
}
let filteredPeople=过滤器('christian','male',1)
console.log(filteredPeople)
let people=[{
“Id”:1270,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“宗教”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空,
},
{
“Id”:1383,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“宗教”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空
},
{
“Id”:1394,
“名字”:“名字”,
“姓氏”:“姓氏”,
“宗教”:“基督徒”,
“记录编号”:1,
“性别”:“男性”,
“接触”:假,
“需要运动”:错误,
“WhenContacted”:空,
“ContactedByWho”:空,
}]
常量过滤器=(宗教、性别、记录编号)=>{
return people.filter(({宗教,性别,记录编号})=>宗教===宗教和性别===性别和+记录编号===+记录编号)
}
let filteredPeople=过滤器('christian','male',1)

console.log(filteredPeople)
请分享您尝试过的代码。我想您可以用RxJS实现这一点:对于初学者来说,这里没有数组……奥斯卡,我只是参与演示了
const temp=this.temp.filter(函数(d){return d.religation.indexOf(val)!=-1 | d.Gender.indexOf(val) !== -1;       });       这个。人=临时工请分享你尝试过的代码。我想你可以用RxJS来实现这一点:首先,你得到的不是数组……奥斯卡,我只是参与其中演示
const temp=this.temp.filter(函数(d){return d.religation.indexOf(val)!=-1 | | | d.Gender.indexOf(val)!=-1;});这个。人=临时工