【发布时间】:2021-03-13 09:01:15
【问题描述】:
multer.js 中的 req.files 示例
[
{
fieldname: files0,
originalname: 'Screenshot from 2020-05-23 01-52-30.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133',
filename: '1606822252923_Screenshot from 2020-05-23 01-52-30.png',
path: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133/1606822252923_Screenshot from 2020-05-23 01-52-30.png',
size: 172092
},
{
fieldname: files0,
originalname: 'Screenshot from 2020-05-22 08-44-05.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133',
filename: '1606822252925_Screenshot from 2020-05-22 08-44-05.png',
path: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133/1606822252925_Screenshot from 2020-05-22 08-44-05.png',
size: 440592
},
{
fieldname: files1,
originalname: 'Screenshot from 2020-05-30 11-36-42.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133',
filename: '1606822252930_Screenshot from 2020-05-30 11-36-42.png',
path: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133/1606822252930_Screenshot from 2020-05-30 11-36-42.png',
size: 477511
},
{
fieldname: files1,
originalname: 'Screenshot from 2020-05-30 11-36-36.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133',
filename: '1606822252931_Screenshot from 2020-05-30 11-36-36.png',
path: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133/1606822252931_Screenshot from 2020-05-30 11-36-36.png',
size: 223362
},
{
fieldname: files1,
originalname: 'Screenshot from 2020-05-30 11-36-31.png',
encoding: '7bit',
mimetype: 'image/png',
destination: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133',
filename: '1606822252932_Screenshot from 2020-05-30 11-36-31.png',
path: 'public/uploads/projects/0a480789-eb14-4fe4-bb89-44aa741efe33/proposals/chma00000133/1606822252932_Screenshot from 2020-05-30 11-36-31.png',
size: 260419
}
]
我想用它们的字段名动态地对每个 JSON 对象进行分组,并将它们存储在一个对象数组中,同时使用它们的字段名编号作为它们的数组索引。
组可以介于 0 到 9 之间,具体取决于用户输入。
我希望的结果是这样的
someArr = [
[
{
fieldname: files0
originalname: somevalue,
...
size: some value
},
{
fieldname: files0,
originalname: somevalue,
...
size: some value
},
]
,
[
{
fieldname: files1,
originalname: somevalue,
...
size: some value
},
{
fieldname: files1,
originalname: somevalue,
...
size: some value
},
{
fieldname: files1,
originalname: somevalue,
...
size: some value
},
]
...
]
如果存在,someArr[9] 会返回
[
{
fieldname: files9,
originalname: somevalue,
...
size: some value
},
{
fieldname: files9,
originalname: somevalue,
...
size: some value
},
]
我尝试的是首先从字段名中解析整数并将它们重新分配为它们的值,以便更好地使用 for 循环进行排序
Object.keys(req.files).forEach((key) => {
const thisFile = req.files[key];
const thisFileGroup = parseInt(thisFile.fieldname.match(/\d/g).join(''), 10);
// rename fieldname from files0, files1 ... to 0 , 1 ....
req.files[key].fieldname = thisFileGroup;
});
但是从这里开始,我找不到将这个元素(thisFile)推送到哪里,因为我无法在上层范围内预先声明每个数组,因为它们也需要动态创建。
【问题讨论】:
-
请接受@mplungjan 的回答。我错过了您需要按索引排序
0、1等。使用对象非常适合分组,但最终顺序不会按键的字母顺序组织。 -
@Roko C. Buljan 检查!我一定也会记住您的解决方案!
标签: javascript node.js arrays