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
相关产品推荐
相关产品推荐

