Amj*_*ood 5 javascript for-loop destructuring ecmascript-6
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 }
];
Run Code Online (Sandbox Code Playgroud)
上面是对象数组。
这是for-loop我解体后得到用户和年龄的信息,但是我想很长一段时间也要怎么做?我希望通过销毁方式来实现它,for-loop就像我对用户和年龄所做的那样
for (let { user, age = "DEFAULT AGE" } of users) {
console.log(user, age);
}
Run Code Online (Sandbox Code Playgroud)
Seb*_*mon 13
您可以使用此:
for (let {user, age = "DEFAULT AGE", geo: {lat, long}} of users) {
console.log(user, age, lat, long);
}
Run Code Online (Sandbox Code Playgroud)
您已经成功user地进行了重构(仅通过对象中的属性名称)和age(也具有默认值)。
要逐步使用嵌套解构,只需将属性名称geo也放在其中,因为这是您要迭代的对象上的下一个包含所需值的属性:
{user, age = "DEFAULT AGE", geo}? - ?这会产生{lat: "12", long: "13"}的geo。
要直接访问嵌套属性,请遵循对象结构:
{user, age = "DEFAULT AGE", geo: {}}?—?这只会验证那geo确实是一个对象。
然后,列出要在该对象中访问的属性:
{user, age = "DEFAULT AGE", geo: {lat, long}}? - ?这将产生"12"对lat与"13"对long。
您甚至可以更进一步,并重命名这些属性:
{user, age = "DEFAULT AGE", geo: {lat: latitude, long: longitude}}? - ?这将产生"12"对latitude与"13"对longitude。
这些是销毁对象的基本情况:
name表示“仅将整个值分配给name”。{}意思是“检查要被解构的值是一个对象,或者可以将其转换为一个对象,即既不是也不null是undefined;不创建变量”。{ prop }表示“获取prop变量的值prop”。{ prop: rename }表示“跟随该prop属性并获取其值作为变量rename” 1。{ prop = value }表示“获取prop变量的值prop,但value如果prop产生则赋值undefined” 2。对于“重命名”情况,规则以递归方式应用:rename就像一样name,因此可以用{}或{ anotherProp },或{ anotherProp: anotherRename },或{ anotherProp = anotherDefault },,等等代替。
可以通过逗号添加同一对象级别的其他属性,例如{propA, propB}。
对于数组,存在类似的情况:[]将验证要解构的值是一个可迭代的对象;[a, b]与...具有相同的含义{0: a, 1: b}; 等等
1:请注意,在{ prop: something }不prop创建变量的情况下。
2:“ yields undefined”表示obj.prop等于,undefined即等于该属性存在并且具有文字值,undefined或者该属性不存在。
| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |