Array.shift()并在一行中修改值

Array.shift() and modify value in a single line?

本文关键字:一行 修改 shift Array      更新时间:2023-09-26

这段Javascript代码从文件列表中删除了第一个文件名,然后删除了它的扩展名:

var fileNoExt = filelist.shift();
fileNoExt = fileNoExt.substr(0, fileNoExt.lastIndexOf('.'));

我很好奇——有可能把这段代码变成一行代码吗?

如何使用正则表达式?

如果您想在.之后强制一个扩展,请使用

var fileNoExt = filelist.shift().replace(/'.[^.]+$/, '');

否则,使用

var fileNoExt = filelist.shift().replace(/'.[^.]*$/, '');

第二个匹配my_crazy_file.my_crazy_file.extension,而第一个只匹配my_crazy_file.extension

下面是一行代码:

var filelist = ['file.name.ext', 'some.another.string']
filelist.shift().split('.').slice(0, -1).join('.') // 'file.name'

"有可能把这段代码变成一行代码吗?"

是的,

var fileNoExt = filelist[0].substr(0, filelist.shift().lastIndexOf('.'));

但是为什么呢?两行就更清楚了