从具有动态 ID 的嵌套对象中获取值 - javascript

安德烈

我正在从 SlackAPI(块元素)接收有效负载,但我无法理解哦,我如何从它获取数据,因为 id 和顺序总是在变化。我想得到 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(),它将在有效负载中找到相关对象。

我们会调用Object.entries()payload.state.values对象,然后使用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; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章