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-loop
,就像我对用户和年龄所做的那样
for (let { user, age = "DEFAULT AGE" } of users) {
console.log(user, age);
}
答案 0 :(得分:7)
您可以使用:
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
”。rename
表示“关注{ prop = value }
属性并将其值作为变量prop
” 1 。prop
表示“获取value
的值作为变量prop
,但如果undefined
产生rename
”name > 2 对于“重命名”案例,规则以递归方式应用:{}
与{ anotherProp }
类似,因此可以将其替换为{ anotherProp: anotherRename }
,{ anotherProp = anotherDefault }
或{{ 1}},或{propA, propB}
等。
同一对象级别的其他属性可以通过逗号添加,例如[]
。
对于数组,存在类似的情况:[a, b]
将验证要解构的值是可迭代的对象; {0: a, 1: b}
与{ prop: something }
的含义相同;等
1:请注意,在prop
的情况下,不会创建变量undefined
。
2:“产量obj.prop
”表示undefined
等于undefined
,这意味着该属性存在且具有文字值from django import forms
from .models import Comment,Issue
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('body',)
class IssueForm(forms.ModelForm):
class Meta:
model = Issue
fields = ('title','content','project','status')
class NewIssueForm(forms.ModelForm):
class Meta:
model = Issue
fields = ('title','content','project','status')
或属性不存在。
答案 1 :(得分:1)
如果您只是想找到一个给定的用户并为其返回地理位置,那么这样做:
users.find( u => u.user === 'Name1' ).geo;
请注意,您可能希望对您的“查找结果”进行一些检查。在尝试使用它之前。例如:
const user = users.find( u => u.user === 'Name1' );
if (user && user.hasOwnProperty('geo')) {
console.log(user.geo);
}