Javascript 循环两个数组并合并数据
我正试图找出做某事的最佳方法。基本上,我允许上传CSV。当这种情况发生时,我将上传的状态存储在一个数组中,例如Javascript 循环两个数组并合并数据,javascript,arrays,ecmascript-6,vuex,Javascript,Arrays,Ecmascript 6,Vuex,我正试图找出做某事的最佳方法。基本上,我允许上传CSV。当这种情况发生时,我将上传的状态存储在一个数组中,例如 tempAttachments:Array[2] 0:Object _id:"12345-678910" bytes:412051 file:File size:411532 title:"someFile.csv" type:"file" fileType:&quo
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"
当这些文件被确认并提交时,我看到前五行是返回它们的数据。所以我知道哪些行属于哪个文件,我设置了文件类型的键
返回的数据如下所示
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中的appropiate数组元素中
所以我有一个函数,它接受数据数组。然后我假设我必须循环附件数组,在这个循环中循环数据数组。然后我需要拿到钥匙,然后循环这些,看看是否有匹配的。这就是我目前所拥有的
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以一种更优雅的方式来实现这一点?此外,将数据添加到我的附件阵列的最佳方式是什么?我一直在玩弄spread操作符,但还没有完全掌握它
谢谢也许你可以这样试试
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"]
createFileData状态、数据
{
const types={};//我们的hashmap
//收集所有唯一的类型
data.forEachitem=>
{
Object.keysitem.forEachkey=>
{
类型[key]=true;
};
};
state.tempAttachments.forEachattachment=>
{
如果attachment.fileType在类型中
{
控制台。记录“匹配”
}
};
}
添加新数据
createFileData状态、数据
{
data.forEachitem=>
{
Object.EntrieSite.forEachtype,行=>
{
rows.forEachrow=>
{
state.tempAttachments.push{
fileType:type,
documentID:行[0],
文档日期:第[1]行,
文档装载:第[2]行,
};
};
};
};
}
也许你可以这样试试
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"]
createFileData状态、数据
{
const types={};//我们的hashmap
//收集所有唯一的类型
data.forEachitem=>
{
Object.keysitem.forEachkey=>
{
类型[key]=true;
};
};
state.tempAttachments.forEachattachment=>
{
如果attachment.fileType在类型中
{
控制台。记录“匹配”
}
};
}
添加新数据
createFileData状态、数据
{
data.forEachitem=>
{
Object.EntrieSite.forEachtype,行=>
{
rows.forEachrow=>
{
state.tempAttachments.push{
fileType:type,
documentID:行[0],
文档日期:第[1]行,
文档装载:第[2]行,
};
};
};
};
}
如果您想尝试,这里有一种不同的方法 临时附件=[ { _id:12345-678910, 字节:412051, 文件:'file', 尺码:411532, 标题:someFile.csv, 类型:文件, fileType:typeOne, }, { _id:9999-2222, 字节:12345, 文件:'file', 尺码:23456, 标题:anotherFile.csv, 类型:文件, 文件类型:typeTwo } ] 资料={ 第一类:{ 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] } } tempaachments.forEacho=>{Object.entriesdata.forEachy=>{ifo.fileType==y[0]Object.assigno,{[y[0]]:y}
如果您想尝试一下,这里有一种不同的方法 临时附件=[ { _id:12345-678910, 字节:412051, 文件:'file', 尺码:411532, 标题:someFile.csv, 类型:文件, fileType:typeOne, }, { _id:9999-2222, 字节:12345, 文件:'file', 尺码:23456, 标题:anotherFile.csv, 类型:文件, 文件类型:typeTwo } ] 资料={ 第一类:{ 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] } } tempaachments.forEacho=>{Object.entriesdata.forEachy=>{ifo.fileType==y[0]Object.assigno,{[y[0]]:y}
console.logtempatachmentsthanks似乎工作正常。将数据实际添加到tempAttachments数组的过程是什么?谢谢,看起来效果不错。将数据实际添加到tempAttachments数组的过程是什么?