在对象的对象数组中设置相同的键

Setting the same keys in an array of an object of objects

我正在尝试完成最初看起来很简单的任务,但事实证明这对我来说有点困难。我有一个对象从客户端发送到无服务器函数。它的长度可变,具体取决于表格中填写的字段。

例如 - 下面是我从客户那里收到的一个对象。在这种情况下,已经填写了 2 个表单字段组,我将其封装在一个数组中,以使其更易于使用。碰巧我需要这样来满足我的过程的最后一步,即通过 POST 请求将此数据从我的无服务器函数发送到 API 端点。

我需要将所有名为“itemInfo(x)”的对象更改为“属性”以满足 API 要求。我尝试了很多不同的解决方案都无济于事。

如果有人可以提供一些 help/insight,我将不胜感激!

[
  {
    itemInfo0: {
      initial_repair_reason: 'POWER - NONE W/ ANY SOURCE',
      serial_number: 'testserial123',
      part_number: '1170-3441 (OxyGo NEXT Slim Backpack)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
    },
    itemInfo1: {
      initial_repair_reason: 'REPLACE COLUMNS',
      serial_number: '123',
      part_number: '1170-3410 (OxyGo NEXT Carry Bag)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
    }
  }
]

我要把上面的变成:

inputs: [
      {
        **properties**: {
      initial_repair_reason: 'POWER - NONE W/ ANY SOURCE',
      serial_number: 'testserial123',
      part_number: '1170-3441 (OxyGo NEXT Slim Backpack)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
        }
      },
      {
        **properties**: {
      initial_repair_reason: 'REPLACE COLUMNS',
      serial_number: '123',
      part_number: '1170-3410 (OxyGo NEXT Carry Bag)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
        }
      }
    ]

遍历数组,然后遍历每个对象的 Object.values() 以使用 properties

创建新对象

const res = data.reduce((a,o) =>{
  Object.values(o).forEach(v => a.push({properties: v}))
  return a;
},[])

console.log(res)
.as-console-wrapper {max-height: 100%!important;top:0}
<script>
const data =[
  {
    itemInfo0: {
      initial_repair_reason: 'POWER - NONE W/ ANY SOURCE',
      serial_number: 'testserial123',
      part_number: '1170-3441 (OxyGo NEXT Slim Backpack)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
    },
    itemInfo1: {
      initial_repair_reason: 'REPLACE COLUMNS',
      serial_number: '123',
      part_number: '1170-3410 (OxyGo NEXT Carry Bag)',
      hs_pipeline: '8360749',
      hs_pipeline_stage: '8360750',
      hubspot_owner_id: '910901',
      subject: 'Repair Request'
    }
  }
]
</script>

这边?

const inputs = Object.values(data[0]).map(el => ({properties : el}))

演示:

const data = 
  [ { itemInfo0: 
      { initial_repair_reason : 'POWER - NONE W/ ANY SOURCE'
      , serial_number         : 'testserial123'
      , part_number           : '1170-3441 (OxyGo NEXT Slim Backpack)'
      , hs_pipeline           : '8360749'
      , hs_pipeline_stage     : '8360750'
      , hubspot_owner_id      : '910901'
      , subject               : 'Repair Request'
      } 
    , itemInfo1: 
      { initial_repair_reason : 'REPLACE COLUMNS'
      , serial_number         : '123'
      , part_number           : '1170-3410 (OxyGo NEXT Carry Bag)'
      , hs_pipeline           : '8360749'
      , hs_pipeline_stage     : '8360750'
      , hubspot_owner_id      : '910901'
      , subject               : 'Repair Request'
      } 
    } 
  ] 

const inputs = Object.values(data[0]).map(el => ({properties : el}))

console.log( inputs )
.as-console-wrapper {max-height: 100%!important;top:0}