Javascript Lodash映射仅在一个条件下
我需要一个名为events.json的文件,然后使用.map创建我的对象Javascript Lodash映射仅在一个条件下,javascript,node.js,object,lodash,Javascript,Node.js,Object,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.id。在这些情况下,map方法在我的newEventL
var data = require('./events.json')
var newEventList = data.events.map(events => ({
id: events.id ,
name: events.name ,
venue: events.venue.name
}));
然而,有时我会得到两个相同的event.id。在这些情况下,map方法在我的newEventList对象中创建一个重复的条目。如果ID相同,是否可以在map函数中设置一个条件来跳过该条目的“映射”
需要添加的一点是,events.json中的重复项始终是连续的,因此If语句将只比较先前映射的项
感谢您的帮助。由于您使用的是
lodash
,因此您可以使用.uniqBy
功能删除阵列中的重复项:
const data = require('./events.json');
const uniqEvents = _.uniqBy(data.events, 'id');
const newEventList = uniqEvents.map(events =>
id: events.id ,
name: events.name ,
venue: events.venue.name
);
由于您使用的是
lodash
,因此可以使用..uniqBy
功能删除阵列中的重复项:
const data = require('./events.json');
const uniqEvents = _.uniqBy(data.events, 'id');
const newEventList = uniqEvents.map(events =>
id: events.id ,
name: events.name ,
venue: events.venue.name
);
使用lodash中提供的
\ uniqBy
(假设OP需要loadash
解决方案)
使用lodash中提供的
\ uniqBy
(假设OP需要loadash
解决方案)
为原始数组中的每个项创建输出,因此不能跳过项。您可以与助手一起使用重复数据消除。对于每个项目,检查id
是否在集合中。如果不是,则将其添加到结果数组和集合中
const data = require('./events.json')
const dedupe = new Set();
const newEventList = data.events.reduce((list, event) => {
if(!dedupe.has(event.id)) {
list.push({
id: event.id ,
name: event.name ,
venue: event.venue.name
});
dedupe.add(event.id);
}
return list;
}, []);
为原始数组中的每个项创建输出,因此不能跳过项。您可以与助手一起使用重复数据消除。对于每个项目,检查id
是否在集合中。如果不是,则将其添加到结果数组和集合中
const data = require('./events.json')
const dedupe = new Set();
const newEventList = data.events.reduce((list, event) => {
if(!dedupe.has(event.id)) {
list.push({
id: event.id ,
name: event.name ,
venue: event.venue.name
});
dedupe.add(event.id);
}
return list;
}, []);
为什么不先过滤
数据.events
,然后再映射,比如说使用.unique()
?我以前从未听说过这种方法。谢谢,我会看一看。为什么不先过滤数据.events
,然后再映射,比如说使用.unique()
?我以前从未听说过这种方法。谢谢,我会看一看。这里有两个非常相似的答案,但我会选择这个,因为我喜欢它包含在一个函数中的方式。谢谢这里的2个非常相似的答案,但我将接受这个,因为我喜欢它包含在一个函数中的方式。谢谢你给我一个非洛达斯式的回答!谢谢你的非洛达斯式回答!