簡體   English   中英

從具有動態 ID 的嵌套對象中獲取值 - javascript

[英]Get values from nested object with dynamic ids - javascript

我正在從 SlackAPI(塊元素)接收有效負載,但我無法理解哦,我如何從它獲取數據,因為 ids 和 order 總是在變化。 我想得到 protection_fee.value、legal_fee.value 和 repayment_date.selected_date

"state": {
"values": {
  "CjV": {
    "protection_fee": {
      "type": "plain_text_input",
      "value": "111"
    }
  },
  "36tAM": {
    "legal_fee": {
      "type": "plain_text_input",
      "value": "111"
    }
  },
  "oH8": {
    "repayment_date": {
      "type": "datepicker",
      "selected_date": "1990-04-18"
    }
  }
}

},

我嘗試了 Object.keys 但顯然我因為訂單更改而失敗了。

當前代碼:

      const payload = JSON.parse(body);
      const state = payload.state.values;
      const first = Object.keys(state)[0];
      const second = Object.keys(state)[1];
      const repaymentDate = state[first].protection_fee.value;
      const protectionFee = state[second].legal_fee.value;

我建議創建一個像findProperty()這樣的函數,它將在有效負載中找到相關對象。

我們會在payload.state.values對象上調用Object.entries() ,然后在入口鍵/值對上使用Array.find()來查找具有所需屬性的對象。

一旦我們擁有了財產,我們就可以將其歸還。

 let payload = { "state": { "values": { "CjV": { "protection_fee": { "type": "plain_text_input", "value": "111" } }, "36tAM": { "legal_fee": { "type": "plain_text_input", "value": "111" } }, "oH8": { "repayment_date": { "type": "datepicker", "selected_date": "1990-04-18" } } } } } function findProperty(obj, key) { const [, value] = Object.entries(obj).find(([k,v]) => v[key]); return value[key]; } console.log('legal_fee:', findProperty(payload.state.values, 'legal_fee').value) console.log('protection_fee:', findProperty(payload.state.values, 'protection_fee').value)
 .as-console-wrapper { max-height: 100% !important; }

暫無
暫無

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

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