Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将嵌套数据分配给新变量?_Javascript_Variables - Fatal编程技术网

Javascript 如何将嵌套数据分配给新变量?

Javascript 如何将嵌套数据分配给新变量?,javascript,variables,Javascript,Variables,我想创建一个新变量line,并使其包含嵌套数据 我期望的结果是: { description: "descriptionString", vatInfo : { vatAccount: { vatCode : "vatCode" } } } 我是如何做到的: export function changeProductOnLine(originalLine, product, customer, invoi

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

我期望的结果是:

{
    description: "descriptionString",
    vatInfo    : {
        vatAccount: {
            vatCode   : "vatCode"
        }
    }
}
我是如何做到的:

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
  }

我所做的对吗?它能起作用吗?

你所做的很接近,但你需要记住,当你使用这样的撒布器时,你会得到以下结果:

{
  description: "descriptionString",
  vatInfo    : {
    vatAccount: {
      vatCode   : "vatCode"
    }
  },
  product: {
    description: "descriptionString",
    vatInfo    : {
      vatAccount: {
          vatCode   : "vatCode"
      }
    }
  }
}
我认为您需要的是
product
覆盖这些值,但根据您所解释的内容,不会在对象中以“product”属性结束。试试这个:

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
  }
}

这样,您也不会在内存中创建一个新变量,只是稍微修改它然后返回它。这一切都会同时发生,并且只有当您有一个arg‘product’值而不是
未定义的
空的

“我所做的是否正确?它能工作吗?”我们很乐意帮助您解决代码中的问题,但这些问题您只需运行代码即可回答。如果你没有得到预期的结果,你可以寻求帮助并解释问题。正如@FelixKling所建议的,运行你的代码来找出答案。如果您在本地没有地方测试它,请尝试选择“JavaScript”作为您的语言,然后离开。我也试着回答你的问题……你确定
vatacount
是预期的输出吗?或者这实际上是你的输入?可能两者都有打字错误(这可以解释错误)@eric未经同意重做一个回滚编辑在这个社区的意义上是不正确的。@Jonaswillms您回滚了一个编辑,消除了混乱。。。这对行动没有帮助。我们是来帮助行动的,而不是基于感觉的改变。后来,他使用拼写正确的
vatAccount
。所以这是一个已知的,而不是未知的。