gpt4 book ai didi

javascript - 如何在for循环中解构嵌套对象

转载 作者:搜寻专家 更新时间:2023-11-01 04:53:27 24 4
gpt4 key购买 nike

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,但我想要纬度和经度,我该怎么做?我希望通过解构和 for-loop 来实现它,就像我对 user 和 age 所做的那样

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

您已经成功解构user (仅通过对象中的属性名称)和 age (也有默认值)。

使用嵌套 destructuring ,一步一步,简单地把属性名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属性并将其值作为变量 rename1
  • { prop = value }表示“获取 prop 的值作为变量 prop , 但分配 value如果prop产量 undefined2

对于“重命名”的情况,规则递归适用:rename就像name , 所以它可以被替换为 {} , 或 { anotherProp } , 或 { anotherProp: anotherRename } , 或 { anotherProp = anotherDefault }

同一对象级别的其他属性可以通过逗号添加,例如 {propA, propB} .

对于数组,存在类似的情况:[]将验证要解构的值是一个可迭代对象; [a, b]{0: a, 1: b}含义相同;等等


1:注意在{ prop: something }的情况下无变量 prop已创建。

2:“产量 undefined ” 表示 obj.prop将等于 undefined这意味着该属性存在并且具有字面值 undefined或者该属性不存在。

关于javascript - 如何在for循环中解构嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com