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

API响应数组筛选问题:获取def为true的地址列表及特定条件对象列表

API响应数组筛选问题:获取def为true的地址列表及特定条件对象列表

我来帮你搞定这个数组筛选的问题,先拆解下你遇到的两个问题,再给出对应的解决方案:

问题1:获取所有def: true的地址并以逗号分隔

你之前用map直接返回了所有地址,所以会包含def: false的项。正确的思路是先筛选符合条件的元素,再提取地址,代码如下:

// 假设你已经拿到了API返回的data,这里先取rspa数组
const myArray = data.rspa;

// 先过滤出def为true的元素,再提取address,最后用逗号拼接
const filteredAddrs = myArray
  .filter(item => item.def === true) // 筛选def为true的对象
  .map(item => item.address) // 提取这些对象的address属性
  .join(",");

console.log(filteredAddrs);
// 输出:FA0EBFB496DA-C5465A8D,FA0434B496DA-C5465A8D

问题2:找到单个def: true的对象的地址(避免报错)

你之前的代码有两个明显的问题:

  1. 把idToLookFor设成了字符串'true',但API返回的def是布尔值true,用===严格比较会不匹配,导致筛选不到任何元素;
  2. 直接取filter结果的[0],如果没有符合条件的元素,[0]就是undefined,再访问.address就会抛出Cannot read properties of undefined的错误。

修正后的代码如下,会先判断是否存在符合条件的元素,再提取地址:

const myArray = data.rspa;

// 筛选所有def为true的对象
const foundObjects = myArray.filter(item => item.def === true);

// 先判断是否有符合条件的元素,再取第一个的address
if (foundObjects.length > 0) {
  const firstFoundAddr = foundObjects[0].address;
  console.log(firstFoundAddr);
  // 输出:FA0EBFB496DA-C5465A8D
} else {
  console.log("没有找到def为true的地址");
}

如果你想获取所有def: true的完整对象列表,直接用foundObjects就可以了,它会包含所有符合条件的对象。

备注:内容来源于stack exchange,提问作者Damira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:49:30