gpt4 book ai didi

javascript - 在 Javascript 中解构对象

转载 作者:行者123 更新时间:2023-11-30 20:08:49 26 4
gpt4 key购买 nike

在我的代码库中我有一个对象:

let myObject = {
"version": 1,
"traceId": "123456789",
"session": {},
"trigger": {
"service": "some_service_is_here",
"action": "update",
"resource": "transaction"
},
"changesets": [
{
"update": {
"retryCount": 1
},
"conditions": {
"equal": {
"subscriptionId": "aaaaaaaaaaaa",
"transactionId": "bbbbbbbbbbbb"
}
}
},
{
"update": {
"retryCount": 2
},
"conditions": {
"equal": {
"subscriptionId": "ccccccccccccc",
"transactionId": "dddddddddddddd"
}
}
}
]
}

我需要从那个对象中提取一些属性。到目前为止,它是使用 Lodash 完成的。还有更多的提取正在进行,但它们非常相同。将其与 Lodash 一起使用的几个示例:

const trigger = _.get(myObject, 'trigger', null);
const retryCount = _.get(myObject, 'changesets[0].update.retryCount', null);

它的工作和行为符合预期。我想通过消除 Lodash 并开始使用解构来改进这段代码。

到目前为止我有这个:

const trigger = _.get(myObject, 'trigger', null);

becomes

const {trigger} = myObject;

还有:

const retryCount = _.get(myObject, 'changesets[0].update.retryCount', null);

成为

const {changesets: [{update:{retryCount:retryCount = null}}]} = myObject;

它也有效,测试通过:

现在我有几个问题:

  1. 这是提取这些值的正确做法吗?

  2. 就速度和代码可读性而言,这样做是否值得?

  3. 第二个解构示例。我将收到一个变更集数组,它有很多对象(未知数量),但我总是对第一个感兴趣。 lodash 示例说明了这一点。当我解构时,我没有指定我需要第一个(从零开始)它默认出现。我需要以某种方式指定我需要第零个,还是默认行为?

最佳答案

  1. 是的,但目前您的变体不相等。您需要将 null 指定为 destructuring 变体中的默认值。
  2. 代码并不快。至于可读性 - 这取决于。
  3. 您当前根据项目在列表中的位置明确指定索引。例如

    const {changesets: [,,{update}]} = myObject;

    将显式提取第三个元素。您不需要做任何额外的事情。

PS retryCount:retryCount 最好不要指定相同的名称两次。看起来很困惑。读者(比如我)会重读数遍,试图找出差异。

关于javascript - 在 Javascript 中解构对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com