Lodash地图仅适用于条件
我有一个名为events.json的文件,我需要使用.map来创建我的对象,
var data = require('./events.json')
var newEventList = data.events.map(events => ({
id: events.id ,
name: events.name ,
venue: events.venue.name
}));
但是,有时我偶尔会得到两个相同的event.ids。在这些实例中,map方法在我的newEventList对象中创建一个重复的条目。如果id相同,我可以在map函数中设置条件以跳过该条目的“映射”吗?
要添加的一件事是,重复项在events.json中始终是连续的,因此If语句只会比较先前映射的项。
谢谢你的帮助。
回答如下:使用lodash中提供的_.uniqBy
(假设OP想要一个loadash
解决方案)
var data = require('./events.json');
var _ = require('lodash')
var newEventList = _.uniqBy(data.events,'id').map(events => ({
id: events.id ,
name: events.name ,
venue: events.venue.name
}));
Lodash地图仅适用于条件
我有一个名为events.json的文件,我需要使用.map来创建我的对象,
var data = require('./events.json')
var newEventList = data.events.map(events => ({
id: events.id ,
name: events.name ,
venue: events.venue.name
}));
但是,有时我偶尔会得到两个相同的event.ids。在这些实例中,map方法在我的newEventList对象中创建一个重复的条目。如果id相同,我可以在map函数中设置条件以跳过该条目的“映射”吗?
要添加的一件事是,重复项在events.json中始终是连续的,因此If语句只会比较先前映射的项。
谢谢你的帮助。
回答如下:使用lodash中提供的_.uniqBy
(假设OP想要一个loadash
解决方案)
var data = require('./events.json');
var _ = require('lodash')
var newEventList = _.uniqBy(data.events,'id').map(events => ({
id: events.id ,
name: events.name ,
venue: events.venue.name
}));