首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将嵌套数据赋给新变量?

如何将嵌套数据赋给新变量?
EN

Stack Overflow用户
提问于 2019-05-03 01:47:43
回答 1查看 33关注 0票数 0

我想创建一个新的变量line,并使其包含嵌套数据。

我所期待的结果是:

代码语言:javascript
运行
复制
{
    description: "descriptionString",
    vatInfo    : {
        vatAccount: {
            vatCode   : "vatCode"
        }
    }
}

我是如何做到的:

代码语言:javascript
运行
复制
export function changeProductOnLine(originalLine, product, customer, invoice) {
  let line = { ...originalLine, product }

  if (product) {
    const vatCode = getProductVatCode(line, invoice)
    line.description = buildLineDescription(product.name, product.description)
    line.vatInfo.vatAccount.vatCode = "v10"
    return line
  }

我做的是正确的吗?它能工作吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 02:03:46

你所做的是很接近的,但你需要记住,当你使用像这样的扩散器时,你最终会得到这样的结果:

代码语言:javascript
运行
复制
{
  description: "descriptionString",
  vatInfo    : {
    vatAccount: {
      vatCode   : "vatCode"
    }
  },
  product: {
    description: "descriptionString",
    vatInfo    : {
      vatAccount: {
          vatCode   : "vatCode"
      }
    }
  }
}

我认为你想要的是让product重写这些值,而不是根据你解释的你想要的东西,在你的对象中最终得到一个'product‘属性。试试这个:

代码语言:javascript
运行
复制
export function changeProductOnLine(originalLine, product, customer, invoice) {
  if (product) {
    return {
       ...originalLine,
       // since these are the last thing in the new obj it will overwrite anything in the obj
       description: buildLineDescription(product.name, product.description),
       vatInfo: {
         vatAccount : {
           vatCode: getProductVatCode(line, invoice)
         }
       }
    }
  } else {
    return line
  }
}

这样,你也不会在内存中创建一个新的变量,只是稍微修改一下,然后再返回它。这一切都会同时发生,而且仅当您具有undefinednull以外的参数'product‘值时才会发生

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55957735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档