我正在尝试找出做某事的最佳方法。本质上,我允许CSV上传。发生这种情况时,我会将上传状态存储在数组中,例如
tempAttachments:Array[2]
0:Object
_id:"12345-678910"
bytes:412051
file:File
size:411532
title:"someFile.csv"
type:"file"
fileType:"typeOne"
1:Object
_id:"9999-2222"
bytes:12345
file:File
size:23456
title:"anotherFile.csv"
type:"file"
fileType:"typeTwo"
当这些文件被确认并提交后,我阅读了前五行正在返回的数据。因此,我知道哪些行属于哪个文件,所以将密钥设置为fileType
。
返回的数据看起来像这样
data:
0:
typeOne:
0: ["123", "21/11/2013", "10"]
1: ["234", "22/11/2013", "20"]
2: ["345", "12/09/2018", "100"]
3: ["456", "22/03/2016", "350"]
4: ["567", "13/02/2013", "50"]
所以这是文件类型为typeOne的文件的前五行。我现在想做的就是将此数组添加到tempAttachments
中适当的数组元素中。
因此,我有使用数据数组的函数。然后,我假设我必须循环附件数组,并在此循环中循环数据数组。然后,我需要获取密钥,并循环这些密钥以查看是否存在匹配项。这是我到目前为止所拥有的
createFileData (state, data) {
for (const attachment of state.tempAttachments) {
for (const fileData of data) {
for (const key of Object.keys(fileData)) {
if (key === attachment.fileType) {
console.log('Match')
}
}
}
}
}
如您所见,它不是很亲切。所以我的问题是,是否可以使用ES6以更优雅的方式做到这一点?此外,将数据添加到附件数组的最佳方法是什么?我一直在和传播操作员一起玩,但是还没有完全掌握。
谢谢
答案 0 :(得分:2)
也许您可以尝试这样
createFileData (state, data)
{
const types = {}; // our hashmap
// collect all unique types
data.forEach(item =>
{
Object.keys(item).forEach(key =>
{
types[key] = true;
});
});
state.tempAttachments.forEach(attachment =>
{
if (attachment.fileType in types)
{
console.log('Match')
}
});
}
createFileData (state, data)
{
data.forEach(item =>
{
Object.entries(item).forEach((type, rows) =>
{
rows.forEach(row =>
{
state.tempAttachments.push({
fileType: type,
documentID: row[0],
documentDate: row[1],
documentAmount: row[2],
});
});
});
});
}
答案 1 :(得分:1)
如果您想尝试,这里是另一种方法
tempAttachments=[
{
_id:"12345-678910",
bytes:412051,
file:'File',
size:411532,
title:"someFile.csv",
type:"file",
fileType:"typeOne",
},
{
_id:"9999-2222",
bytes:12345,
file:'File',
size:23456,
title:"anotherFile.csv",
type:"file",
fileType:"typeTwo"
}
]
data={
typeOne:{
0: ["123", "21/11/2013", "10"],
1: ["234", "22/11/2013", "20"],
2: ["345", "12/09/2018", "100"],
3: ["456", "22/03/2016", "350"],
4: ["567", "13/02/2013", "50"]
}
}
tempAttachments.forEach(o=>{Object.entries(data).forEach(y=>{ if(o.fileType==y[0]) Object.assign(o,{[y[0]]:y})})})
console.log(tempAttachments)