我正在努力展平一个对象中的两个数组

时间:2019-07-19 10:53:59

标签: javascript arrays

我有以下对象,并且我正在努力展平两个数组,因此它们是一个数组。

这里是对象

{ 
  "id":"575802",
  "listOfStuff":[  
      "AB",
   ],
   "listOfDocs":[  
      [  
         {  
            "doc_id":"123456",
            "id":"123",
            "filename":"myFileName.pdf",
         }
      ],
      [  
         {  
            "doc_id":"1234",
            "id":"123",
            "filename":"myFileName2.pdf",
         }
      ]
   ]
}

这是我的目标输出:

{  
   "id":"575802",
   "listOfStuff":[  
      "AB",
   ],
   "listOfDocs":[ 
         {  
            "doc_id":"123456",
            "id":"123",
            "filename":"myFileName.pdf",
         } ,
         {  
            "doc_id":1234,
            "id":"123",
            "filename":"myFileName2.pdf",
         }
   ]
}

我尝试执行以下操作以使数组变平,但这没有用。

Array.prototype.concat.apply([], row.listOfDocs);

2 个答案:

答案 0 :(得分:1)

使用flat function,请尝试以下操作:

const data  =  {
  "id": "575802",
  "listOfStuff": [
    "AB"
  ],
  "listOfDocs": [
    {
      "doc_id": "123456",
      "id": "123",
      "filename": "myFileName.pdf"
    },
    {
      "doc_id": 1234,
      "id": "123",
      "filename": "myFileName2.pdf"
    }
  ]
}

const result = {...data, listOfDocs:data.listOfDocs.flat()};

console.log(result);

答案 1 :(得分:1)

const data =  {
  "id": "575802",
  "listOfStuff": [
    "AB"
  ],
  "listOfDocs": [[
    {
      "doc_id": "123456",
      "id": "123",
      "filename": "myFileName.pdf"
    }],
    [{
      "doc_id": 1234,
      "id": "123",
      "filename": "myFileName2.pdf"
    }
  ]]
}

data.listOfDocs = data.listOfDocs.reduce((acc, val) => acc.concat(val), [])

console.log(data);

您可以使用.flat(),对于IE也需要一个polyfill。

您可以使用上述解决方案来解决问题,而不是使用扁平化解决方案。