You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

根据多键过滤数组:如何同时按宗教、性别和记录号筛选人员数组

多字段过滤人员数组的实现方法

当然可以实现!针对你给出的PEOPLE数组,咱们可以利用JavaScript原生的Array.filter()方法,同时对Religion、Gender和RecordNumber三个字段设置过滤条件,轻松筛选出符合要求的条目。下面给你两种实用的实现方式:

1. 固定条件过滤(明确所有过滤字段)

如果你的过滤条件是固定的(比如明确要找宗教为某值、性别为某值、记录号为某值的人员),直接写死判断逻辑就行:

// 假设你的PEOPLE数组已经定义好了
const PEOPLE = [
  { "Id": 1270, "FirstName": "Alice", "LastName": "Smith", "Religion": "Christianity", "RecordNumber": 1, "Gender": "female", "Contacted": false },
  { "Id": 1383, "FirstName": "Bob", "LastName": "Jones", "Religion": "Islam", "RecordNumber": 2, "Gender": "male", "Contacted": true }
];

// 定义固定的过滤条件
const targetReligion = "Christianity";
const targetGender = "female";
const targetRecordNumber = 1;

// 执行过滤
const filteredPeople = PEOPLE.filter(person => {
  return person.Religion === targetReligion &&
         person.Gender === targetGender &&
         person.RecordNumber === targetRecordNumber;
});

console.log(filteredPeople); // 输出符合所有条件的人员对象

2. 灵活条件过滤(支持任意数量的过滤字段)

如果有时候你可能不需要过滤所有三个字段(比如只过滤宗教和性别,记录号不限),可以写一个通用的过滤函数,让它支持动态传入过滤条件:

function filterPeople(peopleList, filters) {
  return peopleList.filter(person => {
    // 遍历所有传入的过滤条件,只有当所有条件都匹配时才保留该条目
    return Object.entries(filters).every(([fieldName, targetValue]) => {
      return person[fieldName] === targetValue;
    });
  });
}

// 示例1:同时过滤三个字段
const result1 = filterPeople(PEOPLE, {
  Religion: "Islam",
  Gender: "male",
  RecordNumber: 2
});

// 示例2:只过滤宗教和性别,忽略记录号
const result2 = filterPeople(PEOPLE, {
  Religion: "Christianity",
  Gender: "female"
});

// 示例3:只过滤记录号
const result3 = filterPeople(PEOPLE, { RecordNumber: 1 });

额外提示

如果你的字段值可能存在null、undefined或者空字符串的情况,可以稍微修改判断逻辑,比如允许过滤条件为空时自动跳过该字段:

function filterPeople(peopleList, filters) {
  return peopleList.filter(person => {
    return Object.entries(filters).every(([fieldName, targetValue]) => {
      // 如果过滤条件的值为空,直接跳过该字段的判断
      if (!targetValue) return true;
      return person[fieldName] === targetValue;
    });
  });
}

内容的提问来源于stack exchange,提问作者Mouna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:56:04