我有一个对象:
let obj = {
"t":
{
"en": {
"head" :"hello",
"sub" : "this is great"
}
}
"link": {}
}
我正在破坏它:
{ t: { en }}
是否可以在相同的解构语句中将t
重新分配给en
?
所以我希望在变量en
中分配给t
的对象不在en
中
答案 0 :(得分:1)
否,因为iOS 11
是iOS 11
,所以无法重新分配t
。如果t
不一个const
,则可以,可以重新分配它:
t
请注意
const
仅在let t = {
"en":
{
"head": "hello",
"sub" : "this is great"
}
};
({ en: t } = t);
console.log(t);
是父对象的属性的情况下才能进行结构分解-但是,{ t: <something>
是一个独立变量,而不是属性,因此,开始与
t
在右侧的 端带有t
。
如果{ en: <something>
实际上是父对象的属性,那么您可以做同样的事情:
t
答案 1 :(得分:1)
在分解对象时,可以指定propname: variablename
将属性分配给具有不同名称的变量。仅使用不带变量的属性名称等效于propname: propname
,以对变量和属性使用相同的名称,但是您无需使用该快捷方式。
因此您可以这样做:
let obj = {
"t":
{
"en": {
"head" :"hello",
"sub" : "this is great"
}
}
}
let { t: { en: t } } = obj;
console.log(t);
第一个t:
只是一个属性名称,它指定该值也是一个也需要进行结构分解的对象。在该结构中,我们使用propname: variablename
语法,因此en
属性被分配给t
变量。
在函数定义中,它看起来像:
const Home = ({ t: { en: t }, link}) => console.log(t);
let obj = {
"t":
{
"en": {
"head" :"hello",
"sub" : "this is great"
}
}
};
Home(obj);
请注意,t
的两种用法之间没有实际关系。变量实际上可以是任何东西,例如
const Home = ({ t: { en: blah }, link}) => console.log(blah);
答案 2 :(得分:0)
您可以按以下方式一行执行此操作:
let obj = {
"t":
{
"en": {
"head" :"hello",
"sub" : "this is great"
}
}
}
// here we are destructuring en but declaring
// it as a variable which is called t
let { en: t } = obj.t;
console.log(t)
我们可以在分解任务中使用冒号选择一个别名。