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

React Native中如何按名称删除嵌套JSON数组内的对象?

解决嵌套数组中删除指定name属性对象的问题

你的代码没生效主要有几个问题:

  • forEach 本身没有返回值,所以newDatavalues会是undefined
  • 拼写错误:原数据里的子数组是exchnageArr,但你代码里写的是exchangeArr,导致找不到对应数组
  • 就算拼写对了,在forEach里用splice修改数组,可能因为数组长度变化导致遍历异常(虽然这次只有一个目标项,不会有明显问题,但不是稳妥的写法)

给你两种可行的解决方案:

方案一:创建新数组(推荐,不修改原数据)

React里尽量保持数据不可变,这种方式会生成全新的数组,不会影响原数据:

const newDatavalues = arr.map(item => ({
  ...item, // 保留原对象的所有属性
  exchnageArr: item.exchnageArr.filter(subItem => subItem.name !== "FX")
}));

原理:用map遍历外层数组,对每个对象,用展开运算符复制原有属性,然后把exchnageArr替换成过滤后的数组——filter会自动剔除所有name等于"FX"的子项。

方案二:直接修改原数组

如果不需要保留原数据,可以直接修改:

// 方式1:用filter重新赋值子数组
arr.forEach(item => {
  item.exchnageArr = item.exchnageArr.filter(subItem => subItem.name !== "FX");
});

// 方式2:用splice反向遍历删除
arr.forEach(item => {
  // 从后往前遍历,避免删除元素后索引错乱
  for (let i = item.exchnageArr.length - 1; i >= 0; i--) {
    if (item.exchnageArr[i].name === "FX") {
      item.exchnageArr.splice(i, 1);
    }
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:00:13