node.js - 加入同一数组下文件夹的文件
问题描述
我想将具有相同文件夹的文件放入同一个数组中
这是我的代码:
const pathFile = [
'modules/main/main1/main.js',
'modules/server/server1/server.js',
'modules/server/server2/server.js',
];
pathFile.forEach((p) => {
const middle = p.split(/\//g);
middle.pop();
const fileFolder = middle[Math.floor(middle.length - 1) / 2];
array.push({ folder: fileFolder, files: { name: p } });
});
这是我得到的结果:
[
{ "folder": "main", "files": { "name": "modules/main/main1/main.js" } },
{
"folder": "server",
"files": { "name": "modules/server/server1/server.js" }
},
{
"folder": "server",
"files": { "name": "modules/server/server2/server.js" }
}
]
解决方案
您可以reduce
进入由 索引的对象,如果需要folder
,创建关联的folder
对象,推送到files
数组,然后获取该对象的值:
const pathFile = [
'modules/main/main1/main.js',
'modules/server/server1/server.js',
'modules/server/server2/server.js',
];
const obj = pathFile.reduce((a, name) => {
const folder = name.split('/')[1];
if (!a[folder]) {
a[folder] = { folder, files: [] };
}
a[folder].files.push({ name });
return a;
}, {});
const arr = Object.values(obj);
console.log(arr);
推荐阅读
- python - 正则表达式查找两个 html 标签之间的所有内容
- css - 如何更改下拉菜单的高度?
- alexa - 如何为电子邮件地址创建自定义插槽
- r - 将 DataFrame 子集一列,然后在另一列中赋值
- javascript - 放置 $('#header').load('header.html') 脚本后,导航栏下拉菜单向左移动
- django - django设置中记录器和处理程序中级别的目的是什么?
- java - 千分尺:一段时间内系统中的活跃用户数?
- .net - 数据库更新后是否可以删除 EF Core 数据库迁移
- python - 根据架构标准隔离 url 列表
- wpf - WPF:MVVM Microsoft.Expression.Interaction