将string数组减至最小的正则expression式值

我正在研究一个节点模块,它将file upload到s3,并在上传文件后执行了云端无效,但是考虑到失效不是免费的,我想将失效文件path上传到最小的正则expression式值,例如

[ 'library-latest-v2.min.js', 'library-latest-v2.min.js.map', 'library-latest-v2.test.min.js', 'library-latest-v2.test.min.js.map' ] 

会变成library-latest-v2*

任何想法如何去写一个函数来做到这一点? 没有太多的运气谷歌search。 奖金点,如果它可以处理多种变化,例如

 [ 'library-latest-v2.min.js', 'library-latest-v2.min.js.map', 'other-library-v3.min.js', 'other-library-v3.min.js.map' ] 

会减less到['library-latest-v2*', 'other-library-v3*']但不知道这将是多么可能

       

网上收集的解决方案 "将string数组减至最小的正则expression式值"

假设你的数组元素是给定的格式。

尝试这样的事情。

 var arr = [ 'library-latest-v2.min.js', 'library-latest-v2.min.js.map', 'other-library-v3.min.js', 'other-library-v3.min.js.map' ]; var reducedArr = []; var temp; arr.forEach(function(item){ temp = item.split('.')[0] + "*"; if(reducedArr.indexOf(temp) < 0) reducedArr.push(temp); }); console.log(reducedArr); 

干得好:

 let a = [ 'library-latest-v2.min.js', 'library-latest-v2.min.js.map', 'other-library-v3.min.js', 'other-library-v3.min.js.map' ]; let b = []; for (let i of a) { let m = i.match(/[^.]*/).pop() + '*'; if (b.indexOf(m) === -1) { b.push(m); } }