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

如何根据表单筛选API返回的对象属性数据

解决API数据多条件精确筛选问题

你之前把formData转成值数组的做法丢失了字段对应关系,导致无法精准匹配多个条件。正确的做法是保留字段与值的对应关系,再逐一验证每个条件是否同时满足。

1. 正确清洗表单数据

先对formData做清洗,保留键值对结构,过滤掉空字段,同时把值转小写:

const formData = {
    "firstName": "Chris",
    "postcode": "SA11 3FJ"
};

// 清洗表单数据:保留非空字段,值转小写
const cleanedForm = Object.fromEntries(
    Object.entries(formData)
        .filter(([key, value]) => value !== null && value !== '')
        .map(([key, value]) => [key, value.toLowerCase()])
);

清洗后得到的cleanedForm为{firstName: 'chris', postcode: 'sa11 3fj'},完整保留了字段与目标值的对应关系。

2. 使用filter实现多条件同时匹配

遍历API返回的数据,对每个对象检查cleanedForm中的所有条件是否全部满足:

const apiData = [
    {
        "firstName": "chris",
        "lastName": "kundill",
        "postcode": "sa11 3fj"
    },
    {
        "firstName": "sam",
        "lastName": "white",
        "postcode": null
    },
    {
        "firstName": "john",
        "lastName": "davies",
        "postcode": "sa11 3fj"
    },
    {
        "firstName": "jane",
        "lastName": "davies",
        "postcode": "sa11 3fj"
    },
    {
        "firstName": "maria",
        "lastName": "davies",
        "postcode": "sa11 3fj"
    },
    {
        "firstName": "nutter",
        "lastName": "dave",
        "postcode": "sa11 3fj"
    },
    {
        "firstName": "donna",
        "lastName": "duggie",
        "postcode": "sa11 3fj"
    }
];

const filteredData = apiData.filter(item => {
    // 验证所有表单条件是否同时匹配
    return Object.entries(cleanedForm).every(([key, targetValue]) => {
        // 处理字段值为null的情况,避免转换小写时报错
        const itemValue = item[key]?.toLowerCase() || '';
        return itemValue === targetValue;
    });
});

console.log(filteredData);
// 输出结果:[{firstName: 'chris', lastName: 'kundill', postcode: 'sa11 3fj'}]

关键逻辑说明

  • Object.entries(cleanedForm).every(...)确保只有全部满足表单条件的对象才会被保留,彻底避免只满足单个条件的结果混入。
  • 针对API数据中字段为null的情况做了兼容处理,避免转换小写时出现报错,同时这类值也会因为无法匹配目标值被过滤。
  • 保留字段与值的对应关系是解决问题的核心,之前的数组方式无法区分值对应的字段,导致筛选逻辑偏离预期。

内容的提问来源于stack exchange,提问作者i-am-niall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:47:12