这个数组怎么过滤

data = [
    "c_2_12323_JAMES_PHONE",
    "g_3_52343_ANDY_PHONE",
    "a_2_24123_JAMES_PHONE"
]

这个数组里 每个字符中的前三个都是不需要的

要把它过滤成

data = [
        "JAMES_PHONE",
        "ANDY_PHONE",
        "JAMES_PHONE"
    ]

可以把 _ 都去掉更好

有什么比较好的做法?

阅读 1.7k
2 个回答
data.map(item=>item.replace(/\w_\d_\d*_(\w*)_(\w*)/g,'$1_$2'))

或者

data.map(item=>item.match(/([^_]+)/g).slice(3,5).join('_'))

去掉最后的_这样写:

data.map(item=>item.replace(/\w_\d_\d*_(\w*)_(\w*)/g,'$1$2'))

或者

data.map(item=>item.match(/([^_]+)/g).slice(3,5).join(''))

1楼的方法中不应该用splice,因为splice是用来删除元素的,它返回的是删除掉的元素,这里正好是你需要的后两个,应该用slice截取更加合于语义

for(let i = 0; i < data.length; i++ ){
  data[i] = data[i].split("_").splice(3).join("");
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏