19
var用户=[{user:“Name1”,地理位置:{lat:'12',长:'13'}},{user:“Name2”,geo:{lat:'12',long:'13'},age:2},{user:“Name2”,地理位置:{lat:'12',长:'13'}},{用户:“Name3”,地理位置:{lat:'12',长:'13'},年龄:4}];

上面是对象数组。

这里是for循环我破坏了,得到了用户和年龄,但我想要的是lat和long,我该怎么做?我想通过破坏和for循环就像我对用户和年龄所做的那样

for(让{user,age=“DEFAULT age”}个用户){console.log(用户,年龄);}
1
  • 添加,地理位置:{lat,lang}(或长的,取决于拼写)? 评论 2018年6月18日22:32

2个答案2

重置为默认值
41

您可以使用:

for(让{user,age=“DEFAULT age”,geo:{lat,long}}个用户){console.log(用户、年龄、纬度、长度);}

你已经成功破坏了用户(简单地按对象中的属性名称)和年龄(也使用默认值)。

使用嵌套破坏,一步一步,只需输入属性名地理在这里,因为这是您正在迭代的对象的下一个属性,其中包含您需要的值:

{user,age=“默认年龄”,地理} — 这将产生{纬度:“12”,长度:“13”}对于地理.

要直接访问嵌套属性,请遵循对象结构:

{user,age=“默认年龄”,地理位置:{}} — 这将验证这一点地理确实是一个对象。

然后,列出要在该对象中访问的属性:

{user,age=“默认年龄”,地理位置:{lat,long}} — 这将产生"12"对于纬度"13"对于长的.

你甚至可以更进一步重命名这些属性:

{user,age=“默认年龄”,地理位置:{lat:纬度,long:经度}} — 这将产生"12"对于纬度"13"对于经度.


以下是破坏对象的基本情况:

  • 名称表示“只需将整个值赋给名称”.
  • {}表示“检查要销毁的值是否是一个对象或可以转换为一个对象,即两者都不是无效的也不是未定义; 不创建变量”。
  • {道具}表示“获取支柱作为变量支柱”.
  • {prop:重命名}意思是“遵循支柱属性并获取其值作为变量重命名1.
  • {prop=值}表示“获取支柱作为变量支柱,但分配价值如果支柱产量未定义2.

对于“重命名”情况,规则递归应用:重命名就像是名称,因此可以替换为{},或{另一个属性},或{anotherProp:anotherRename},或{anotherProp=anotherDefault}等。

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

对于阵列,存在类似的情况:[]将验证要销毁的值是否为可迭代的对象;[甲,乙]含义与{0:a,1:b}; 等。


1:注意,在{prop:某物}无变量支柱已创建。

2:“产量未定义“意味着对象.prop将等于未定义这意味着该属性存在并且具有文字值未定义或者该属性不存在。

0
1

如果您只是尝试查找给定用户并返回其地理位置,则可以:

users.find(u=>u.user===“名称1”).geo;

请记住,在尝试使用“查找结果”之前,您可能需要对其进行一些检查。例如:

const user=users.find(u=>u.user===“名称1”);if(user&&user.hasOwnProperty('geo')){console.log(user.geo);}

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.