如何使用Node.js/JavaScript对数组元素切片去除home/work/固定前缀
错误原因
你现有代码的问题有两个:
slice()方法的参数是字符下标,slice(2)代表删除字符串前2个字符,所以home/work/开头的字符串会被砍掉前两位的ho,剩下me/work/开头的内容,和你的需求不符。data本身是字符串类型,没有join()方法,你原代码调用join("/")会直接抛出类型错误。
正确实现方案
这里提供4种可行的实现方式,你可以按需选择:
方案1:直接替换前缀(最简便)
直接用replace()把指定前缀替换为空字符串即可:
let array1= [ "home/work/data.jpg", "home/work/abc.jpg", "home/work/doc/animal.pdf", "home/work/doc/fish_pdf.pdf" ]; array1 = array1.map(data => data.replace('home/work/', '')); console.log(array1);
方案2:正则匹配开头前缀(避免中间出现相同字符串被误替换)
如果路径中间可能出现home/work/的情况,用正则匹配开头的前缀更安全:
array1 = array1.map(data => data.replace(/^home\/work\//, ''));
方案3:按前缀分割取后半段
将字符串按home/work/分割为数组,取分割后的第二个元素即可:
array1 = array1.map(data => data.split('home/work/')[1]);
方案4:按固定长度截取
home/work/的长度固定为10个字符,直接从下标10的位置开始截取即可:
array1 = array1.map(data => data.slice(10));
以上4种方案运行后输出的结果均为:
["data.jpg", "abc.jpg", "doc/animal.pdf", "doc/fish_pdf.pdf"]
注:你预期结果里写的doc/animal.jpg属于笔误,原数据中该文件后缀为pdf,处理后会保留原后缀。
内容的提问来源于stack exchange,提问作者user16041868
相关产品推荐
相关产品推荐

