javascript – 如何在for循环中构造嵌套对象
作者:互联网
var users = [
{ user: "Name1",geo:{lat:'12',long:'13'} },
{ user: "Name2",geo:{lat:'12',long:'13'}, age: 2 },
{ user: "Name2",geo:{lat:'12',long:'13'} },
{ user: "Name3",geo:{lat:'12',long:'13'}, age: 4 }
];
上面是对象数组.
这是for-loop我解构并获得用户和年龄,但我想要lat和long我也将如何做到这一点?我希望它通过解构和for循环,就像我用户和年龄一样
for (let { user, age = "DEFAULT AGE" } of users) {
console.log(user, age);
}
解决方法:
假设,您的财产实际上被称为长,因为这将是经度的短,使用此:
for (let {user, age = "DEFAULT AGE", geo: {lat, long}} of users) {
console.log(user, age, lat, long);
}
您已经成功地对用户(仅通过对象中的属性名称)和年龄(也使用默认值)进行了解构.
要逐步使用嵌套的destructuring,只需将属性名称geo放在那里,因为这是您正在迭代的对象的下一个属性,其中包含您需要的值:
{user,age =“DEFAULT AGE”,geo} – 对于geo,这将产生{lat:“12”,long:“13”}.
要直接访问嵌套属性,请遵循以下对象结构:
{user,age =“DEFAULT AGE”,geo:{}} – 这只会验证geo确实是一个对象.
然后,列出要在该对象中访问的属性:
{user,age =“DEFAULT AGE”,geo:{lat,long}} – 这将为lat产生“12”,为长时间产生“13”.
你甚至可以更进一步,重命名这些属性:
{user,age =“DEFAULT AGE”,geo:{lat:latitude,long:longitude}} – 这将为纬度产生“12”,为经度产生“13”.
这些是解构对象的基本情况:
> name表示“只需将整个值分配给name”.
> {}表示“检查要解构的值是一个对象还是可以转换为一个,即既不是null也不是未定义;不创造变数“.
> {prop}的意思是“将prop的值作为变量prop”.
> {prop:rename}表示“跟随prop属性并将其值作为变量重命名”1.
> {prop = value}表示“将prop的值作为变量prop,但如果prop产生undefined则赋值”2.
对于“重命名”情况,规则以递归方式应用:重命名就像名称一样,因此可以用{},{anotherProp}或{anotherProp:anotherRename}或{anotherProp = anotherDefault}等替换.
可以通过逗号添加同一对象级别的其他属性,例如{propA,propB}.
对于数组,存在类似的情况:[]将验证要解构的值是可迭代对象; [a,b]与{0:a,1:b}具有相同的含义;等等
1:请注意,在{prop:something}的情况下,不会创建变量prop.
2:“yield undefined”意味着obj.prop将等于undefined,这意味着该属性存在且文本值未定义或该属性不存在.
标签:destructuring,javascript,ecmascript-6,for-loop 来源: https://codeday.me/bug/20190910/1800724.html