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

如何基于isActive标志过滤API返回的对象数组?

解决方法

先修正你代码里的核心问题,再实现正确的过滤逻辑:

1. 修复异步函数的递归问题

你定义的GetList函数内部又调用了同名的GetList(),这会触发无限递归,先把函数名改成不同的,比如fetchItemList:

const fetchItemList = async () => {
  const [data, error] = await GetList(); // 这里的GetList是原接口请求函数
  if (error) {
    console.error('获取列表失败:', error);
    return [];
  }
  return data;
};

2. 用data变量实现正确过滤

你提到数组实际存在data中,但之前的代码误用了未定义的response,这是报错的主要原因。另外注意isActive的实际类型,分两种情况处理:

  • 如果isActive是布尔值(true/false),直接判断值本身即可
  • 如果isActive是字符串类型('true'/'false'),才用字符串匹配

完整实现示例

// 获取并过滤列表的完整函数
const getActiveItems = async () => {
  const [data, error] = await GetList();
  if (error) {
    console.error('请求出错:', error);
    return [];
  }
  
  // 选择对应情况的过滤逻辑
  // 情况1:isActive为布尔值
  const activeItems = data.filter(obj => obj.isActive);
  
  // 情况2:isActive为字符串类型
  // const activeItems = data.filter(obj => obj.isActive === 'true');
  
  console.log('过滤后的活跃元素:', activeItems);
  return activeItems;
};

// 执行函数
getActiveItems();

额外提醒

  • 务必处理error分支,避免请求失败时后续代码崩溃
  • 可以先打印data[0].isActive确认该字段的实际类型,再调整过滤条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:57:35