具有相同名称的Concat对象数组

时间:2017-08-07 18:56:50

标签: javascript regex object ecmascript-6 vue.js

我在vue.js中有一个带有vuex的应用程序,它实现了一些模块,我正在做的是连接对象来获取一些动作,getter,突变。 像这样:

const files = require.context('../../renderer/', true, /\?*.actions.js|.\?*.getters.js|.\?*.mutations.js$/);
const modulesSrc = {};

files.keys().forEach((key) => {
  modulesSrc[key.replace(/(\.*\/|\.js)/g, '')] = files(key).default;
});

export default modulesSrc;

我得到的是:

enter image description here

当我尝试通过仅获取文件夹的名称来更改正则表达式时,它是这样的:

const files = require.context('../../renderer/', true, /\?*.actions.js|.\?*.getters.js|.\?*.mutations.js$/);
const modulesSrc = {};

files.keys().forEach((key) => {
  modulesSrc[key.replace(/(\.*\/|\.js|actions?|getters?|mutations)/g, '')] = files(key).default;
});

export default modulesSrc;

enter image description here

但是在元素内部,它只获取最后一个文件,并且不与其他文件连接。

我想获得这些高亮对象(第一个正则表达式):

enter image description here

此输出内部(最后一个正则表达式):

enter image description here

我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

我的建议更简单,并且不需要额外的正则表达式开销:



const key = '/home/folder/something/mutations.js'
const filename = key.substring(key.lastIndexOf('/') + 1, key.lastIndexOf('.'))
console.log(filename)