我有一个JavaScript对象,我需要提取部分然后创建一个新的对象数组。需要注意的主要事项是新对象中的键名称不同(适用于Google跟踪代码管理器,并且已预定义了键名称)。
我想使用underscore.js,因为它已经在这个项目中被大量使用,但如果一个vanilla JS解决方案更简单,它就不是必需的。
这是现有对象的简化版
{
'object_handle': 'handle',
'something_else': 'ladela',
'some_other_thing': 'other thing',
'data':{
'object_id': 120,
'buildings':[
{
'item_id':120,
'title':'Some title',
'not_needed': 'Don't need this',
'locations':[
{
'location_id':4444
}
]
},
{
'item_id':121,
'title':'Some other title',
'not_needed': 'Don't need this',
'locations':[
{
'location_id':5555
}
]
},
{
'item_id':122,
'title':'Some different title',
'not_needed': 'Don't need this',
'locations':[
{
'location_id':6666
}
]
}
]
}
}
我想提取部件(来自data.buildings)并创建这个新的对象数组
[{
'name': 'Some title',
'id': '120',
'location': '4444'
},
{
'name': 'Some other title',
'id': '121',
'location': '5555'
},
{
'name': 'Some different title',
'id': '122',
'location': '6666'
}]
任何建议都将受到赞赏。
如果有帮助,我创建了一个包含数据的小提琴 - https://jsfiddle.net/e7t8ypmd/2/
答案 0 :(得分:0)
试试这个......
我认为var a是你的对象......
var a ={your object};
var b = _.each(a.data.buildings, function (item) {
item.name = item.title;
item.id = item.item_id;
item.location = item.locations[0].location_id;
});
var plucked = b.map(function (model) {
return _.pick(model, ["name", "id","location"]);
});
变量'plucked'将只具有必需的属性。