Javascript 循环两个数组并合并数据

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

我正试图找出做某事的最佳方法。基本上,我允许上传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"
当这些文件被确认并提交时,我看到前五行是返回它们的数据。所以我知道哪些行属于哪个文件,我设置了文件类型的键

返回的数据如下所示

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数组的过程是什么?