簡體   English   中英

在 object 對象數組中設置相同的鍵

[英]Setting the same keys in an array of an object of objects

我正在嘗試完成最初看起來很簡單的任務,但開始證明對我來說有些困難。 我有一個 object 從客戶端發送到無服務器 function。 它的長度根據表格上填寫的字段而變化。

例如 - 下面是我從客戶那里收到的 object。 在這種情況下,已經填寫了 2 個表單字段組,我將它們封裝在一個數組中,以使其更易於使用。 碰巧我需要這種方式來滿足我流程的最后一步,即通過 POST 請求將這些數據從我的無服務器 function 發送到 API 端點。

我需要將所有名為“itemInfo(x)”的對象更改為“屬性”以滿足 API 要求。 我嘗試了很多不同的解決方案都無濟於事。

如果有人可以提供一些幫助/見解,我將不勝感激!

[
  {
    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 的 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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM