Javascript 使用Lodash拾取嵌套对象的关键帧
我有一个这样的结构:Javascript 使用Lodash拾取嵌套对象的关键帧,javascript,nested,lodash,Javascript,Nested,Lodash,我有一个这样的结构: areas = { 'sample-id': { title: 'Area 1', type: 'outdoor', boundaries: [ 'fm-86071.92984676428', 'fm-33663.81255808968', 'fm-22124.724922206497', 'fm-98002.82095021005'
areas = {
'sample-id': {
title: 'Area 1',
type: 'outdoor',
boundaries: [
'fm-86071.92984676428', 'fm-33663.81255808968',
'fm-22124.724922206497', 'fm-98002.82095021005'
]
},
'sample-id-2': {
title: 'Area 2',
type: 'meetingroom',
boundaries: [
'fm-39517.47084731459', 'fm-79087.74683350614',
'fm-39153.28644344014', 'fm-38873.63204123109',
'fm-67952.07827771583', 'fm-53210.58304837807',
]
}
};
我需要获得一个由每个区域的所有title
键组成的数组,即所需的输出=['area 1','area 2']
我发现,
\uuu.pull
已被删除,取而代之的是\uuu.map
,但使用
_.map(areas, 'title')
…需要区域成为一个数组。我还认为,使用
.values
将对象转换为数组,然后使用.map
应该可以,但是有没有直接或首选的方法?编辑:我还想保留键的顺序
编辑2:好的,我忘记了对象中的键没有顺序,所以我想我会使用
Array.prototype.sort()
Object.keys(areas).map(k => areas[k].title)
在这种情况下,我使用
Object.keys(areas).map(k => areas[k].title)
您可以使用Object.values()
区域={
“样本id”:{
标题:“1区”,
类型:'户外',
边界:[
‘fm-86071.92984676428’、‘fm-33663.81255808968’,
‘fm-22124.724922206497’、‘fm-98002.82095021005’
]
},
“样本-id-2”:{
标题:“区域2”,
类型:“会议室”,
边界:[
‘fm-39517.47084731459’、‘fm-79087.74683350614’,
‘fm-39153.28644344014’、‘fm-38873.63204123109’,
‘fm-67952.07827771583’、‘fm-53210.58304837807’,
]
}
};
让returnValue=Object.values(areas.map)(value=>value.title)
console.log(returnValue)
您可以使用Object.values()
区域={
“样本id”:{
标题:“1区”,
类型:'户外',
边界:[
‘fm-86071.92984676428’、‘fm-33663.81255808968’,
‘fm-22124.724922206497’、‘fm-98002.82095021005’
]
},
“样本-id-2”:{
标题:“区域2”,
类型:“会议室”,
边界:[
‘fm-39517.47084731459’、‘fm-79087.74683350614’,
‘fm-39153.28644344014’、‘fm-38873.63204123109’,
‘fm-67952.07827771583’、‘fm-53210.58304837807’,
]
}
};
让returnValue=Object.values(areas.map)(value=>value.title)
console.log(returnValue)
Lodash的\u.map()
也适用于对象:
var区域={“样本id”:{“标题”:“区域1”,“类型”:“室外”,“边界”:[“fm-86071.92984676428”,“fm-33663.81255808968”,“fm-22124.724922206497”,“fm-98002.82095021005”],“样本id-2”:{“标题”:“区域2”,“类型”:“会议室”,“边界”:[“fm-39517.47084731459”,“fm-79087.74683350614”,“fm-39153.28644344014”,“fm-12320438109”,“fm-67952.07827771583”、“fm-53210.58304837807”]};
var result=uz.map(区域,'title');
console.log(结果);
Lodash的..map()
也适用于对象:
var区域={“样本id”:{“标题”:“区域1”,“类型”:“室外”,“边界”:[“fm-86071.92984676428”,“fm-33663.81255808968”,“fm-22124.724922206497”,“fm-98002.82095021005”],“样本id-2”:{“标题”:“区域2”,“类型”:“会议室”,“边界”:[“fm-39517.47084731459”,“fm-79087.74683350614”,“fm-39153.286444014”,“fm-12338109”fm-67952.07827771583,“fm-53210.58304837807”]};
var result=uz.map(区域,'title');
console.log(结果);
无法保留键的顺序。JavaScript对象不保留其顺序。如果您想要有序键,则应使用数组而不是对象。但是,可以按名称对键进行排序。正如您所提到的.map(区域,'title'))
也适用于对象。请参见我的答案。键的顺序无法保留。JavaScript对象不保留其顺序。如果您想要有序键,则应使用数组而不是对象。但是,可以按名称对键进行排序。正如您提到的。.map(区域,'title')
也适用于对象。请参阅我的答案。如果您关心的是对象顺序,则无法完成。请看我对问题的评论如果您关心的是对象顺序,则无法完成。请看我对问题的评论