Javascript 根据相关元素的数量更改数组的结构-JS

Javascript 根据相关元素的数量更改数组的结构-JS,javascript,arrays,Javascript,Arrays,我有一个数组,我正试图用SheetJs导出到excel,但在将数据结构转换为所需的数据结构时遇到了问题。 以下是所有详细信息: 页眉 ['key1', 'key2', 'key3', 'key4', 'key5', 'key6'] 我的阵型:(新阵型中有通缉位置) 想要的结果: [ {'key1': 'text1', 'key2': 'text2', 'key3': 'text3', 'key4': 'text4', 'key5': 'text6', 'key6': 'text7' }

我有一个数组,我正试图用
SheetJs
导出到excel,但在将数据结构转换为所需的数据结构时遇到了问题。
以下是所有详细信息:

页眉

['key1', 'key2', 'key3', 'key4', 'key5', 'key6']
我的阵型:(新阵型中有通缉位置)

想要的结果:

[
    {'key1': 'text1', 'key2': 'text2', 'key3': 'text3', 'key4': 'text4', 'key5': 'text6', 'key6': 'text7' },
    {'key2', 'text1', 'key2': 'text2', 'key4': 'text5'},
    {'key4': 'text5'},
]
正如您所看到的,我想根据元素外观的数量重新构造元素

我甚至无法描述我在过去几个小时里尝试了什么,比如将结果转换为数组和hashmap等等,但我无法得到想要的结果。
如果我正确理解所需结果,将不胜感激。

  • 您希望基于输入对象数组创建结果对象数组
  • 输入对象有一个或多个键/值对
  • 结果对象是输入对象的合并结果,将重复出现的关键点放置到它们自己的对象
要实现这一点,您可以将逻辑分解为:

  • 迭代输入数组对象及其键/值对
  • 将值附加到没有给定键的第一个结果对象
  • 如果没有没有没有给定键的结果对象,请使用键/值添加新的结果对象
  • 这看起来像什么:

    常量输入数组=[
    {key1:'text1'},
    {key2:'text2'},
    {key2:'text6'},
    {key3:'text3'},
    {key4:'text4'},
    {key4:'text5'},
    {key4:'text5'},
    {key5:'text6'},
    {key6:'text7'}
    ]
    常量结果数组=[];
    //循环输入键/值对象
    inputArray.forEach((inputItem)=>{
    //在输入对象的每个键/值对上循环(看起来通常是一个)
    Object.entries(inputItem.forEach)([key,value])=>{
    //在结果数组中搜索不带给定键的现有对象
    让outputIndex=-1;
    
    for(设i=0;i除原始数组外,您是否还有其他信息来指示给定键/值应属于哪个结果对象?这是否只是它们遇到的顺序(即,第一个键1/2/3…转到第一个结果,下一次遇到一个键时,它转到后续结果)?谢谢你的帮助。我只需要保留键值,只需要按照我描述的顺序创建对象就行了。下面是sheetJs文档中的一个示例:
    var ws=XLSX.utils.json_to_sheet([{S:1,h:2,e:3,e_1:4,t:5,J:6,S_1:7},{S:2,h:3,e:4,e_1:5,t:6,J:7,S_1:8}),{header:[“S”、“h”、“e”、“e_1”、“t”、“J”、“S_1”]})
    如果顺序不重要,您如何知道给定的键/值输入是哪个输出行的一部分?另外,在您想要的结果中,第一个和第二个结果都有
    'key2':'text2'
    ,第二个结果应该是
    'text6'
    ?Breliant!!非常感谢。
    [
        {'key1': 'text1', 'key2': 'text2', 'key3': 'text3', 'key4': 'text4', 'key5': 'text6', 'key6': 'text7' },
        {'key2', 'text1', 'key2': 'text2', 'key4': 'text5'},
        {'key4': 'text5'},
    ]