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

如何修改JavaScript代码移除name包含指定字符串的数组元素

修改数组过滤逻辑:从精确匹配到包含匹配

你现在的代码是严格匹配name等于"abc"的元素,要改成检查name是否包含"abc",其实只需要把严格相等的判断换成字符串的includes()方法就行啦。

原代码回顾

原代码通过倒序遍历数组,找到name严格等于"abc"的项并移除:

var i; for (i = result.length; i--;) { if (result[i].name === "abc") { result.splice(i, 1); } }

修改后的代码

把=== "abc"换成includes("abc")即可实现包含匹配:

var i; for (i = result.length; i--;) { 
  if (result[i].name.includes("abc")) { 
    result.splice(i, 1); 
  } 
}

逻辑说明

  • includes()方法会检查字符串中是否存在指定子串,只要"abc"是name的一部分(比如"abcd"、"xabc"、"abc"本身),都会返回true,完全符合你的需求。
  • 倒序遍历的逻辑不用改动,这样在使用splice移除元素时,不会影响还未遍历到的索引,避免出现漏删或遍历错位的问题。

兼容老浏览器的替代方案

如果需要兼容IE这类不支持includes()的老浏览器,可以用indexOf()替代:

var i; for (i = result.length; i--;) { 
  if (result[i].name.indexOf("abc") !== -1) { 
    result.splice(i, 1); 
  } 
}

indexOf()会返回子串的起始索引,找不到则返回-1,因此判断结果不等于-1就说明目标子串存在。

验证示例数据

用你给出的result示例:

[{"name": "aaa", "number": "123"},{"name": "abc", "number": "456"},{"name": "abcd", "number": "789"}]

修改后的代码会移除name为"abc"和"abcd"的两个元素,最终result仅剩下{"name": "aaa", "number": "123"}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:03:01