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
。所以这是一个已知的,而不是未知的。