将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*']
但不知道这将是多么可能
假设你的数组元素是给定的格式。
尝试这样的事情。
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); } }