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

API返回Proxy结构数据,如何访问数组对象属性并过滤links?

解决方案

1. 先解决Proxy嵌套属性访问问题

因为你的数据被Proxy包装,直接访问嵌套属性(比如link.source.name)可能被拦截导致返回undefined,需要先拿到原始的非代理化数据:

// 方法1:将Proxy转为普通对象(适合无循环引用的场景)
const rawChart = JSON.parse(JSON.stringify(this.chart));
const rawLinks = rawChart.links;

// 方法2:直接获取Proxy的原始目标对象(部分环境支持)
const rawLinks = this.chart[[Target]].links;

2. 修正过滤逻辑

你原来的过滤逻辑存在逻辑漏洞:io.source.name || io.target.name是短路判断,只会检查第一个非假值的属性,无法同时校验source和target的name。正确逻辑应该是:只要source.name或target.name在过滤列表中,就排除该link。

const dataToFilter = ['String1', 'String2'];

const filteredLinks = rawLinks.filter(link => {
  const sourceMatch = dataToFilter.includes(link.source.name);
  const targetMatch = dataToFilter.includes(link.target.name);
  // 仅保留source和target的name都不在过滤列表中的link
  return !sourceMatch && !targetMatch;
});

问题根源说明

  • Proxy拦截:Proxy可能对嵌套对象的属性访问做了拦截处理,导致直接访问link.source.name无法拿到真实值,必须先获取原始数据。
  • 逻辑错误:原代码的||运算符会短路执行,无法同时校验source和target的name是否在过滤列表中,导致过滤结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:06:17