javascript - 将字符串数组减少到最小的可正则表达式值

标签 javascript arrays node.js string

我正在开发一个 Node 模块,该模块将文件上传到 s3 并在上传文件后执行云端失效,但考虑到失效不是免费的,我想将上传的失效文件路径减少到可能的最小正则表达式值,例如

[
  '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*

有什么想法可以编写一个函数来做到这一点吗?谷歌搜索没有太多运气。如果它可以处理多种变化,例如

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

会减少到['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);

另一个没有任何进一步变量的解决方案

var arr = [
  'library-latest-v2.min.js',
  'library-latest-v2.min.js.map',
  'other-library-v3.min.js',
  'other-library-v3.min.js.map'
].map(function(item){
  return item.split('.')[0] + "*";
}).filter(function(item, index, self){
  return self.indexOf(item) === index;
});

console.log(arr);

关于javascript - 将字符串数组减少到最小的可正则表达式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367367/

相关文章:

javascript - 通过在 div 中使用 html 注释来显示/隐藏文本

javascript - 如何使用javascript从对象数组中获取键的唯一值?

node.js - Firebase 验证 ID token

javascript - 一个容器中的许多矩形 - 当改变其中一个的大小时,其他的必须补偿

javascript - React javascript 中的过程和方法是什么?

JavaScript 获取图像的尺寸,而不是渲染图像的大小

c# - 将数组本身实现为 `.CopyTo(Array,int)` 作为目标数组(要复制到)

javascript - 仅将唯一对象添加到 JavaScript 中的数组

c++ - 链接器错误已定义

javascript - 如何获取cheerio检索到的所有标题名称?