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

如何在循环遍历数组项时移除名称中的下划线及指定后缀?

String.replace() 方法不会修改原字符串,而是返回替换后的新字符串,你的代码没有把替换结果重新赋值给name属性,所以修改不会生效。同时你当前的正则只匹配了_er,没有覆盖_bx的匹配逻辑。

方案1:删除字符串中下划线后面的所有内容

该方案会匹配第一个下划线到字符串末尾的所有内容并删除,不管下划线后是什么字符:

const newArr = nullValue.collection.map(item => {
  // 解构复制避免修改原数组中的对象,不需要修改原数据推荐用这种写法
  return {
    ...item,
    name: item.name.replace(/_.*$/, '')
  }
})

处理后结果:test_er变为test,test_bx变为test,fred保持原值不变。

方案2:仅删除指定的下划线后缀

该方案只会删除你明确指定的后缀,不会误删其他带下划线的内容:
如果需要同时删除_er和_bx后缀,正则写法如下:

const newArr = nullValue.collection.map(item => {
  return {
    ...item,
    // 括号内用|分隔你要删除的后缀,$标识匹配字符串末尾,避免匹配到中间的下划线内容
    name: item.name.replace(/_(er|bx)$/, '')
  }
})

如果只需要删除_er这一种后缀,修改正则即可:

const newArr = nullValue.collection.map(item => {
  return {
    ...item,
    name: item.name.replace(/_er$/, '')
  }
})

如果不需要保留原数组数据,可以直接遍历修改原对象:

nullValue.collection.forEach(item => {
  item.name = item.name.replace(/_(er|bx)$/, '')
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:18:04