Javascript JS nested array.map
嗨,我有以下数据:Javascript JS nested array.map,javascript,arrays,Javascript,Arrays,嗨,我有以下数据: data = [{due_at: '2019-09-10', yards:[{name: 'test'},{name: 'test2'}]}...] 我希望迭代此日期以得出: events = [{start: '2019-09-10', end: '2019-09-10, title: 'test'},{start: '2019-09-10', end: '2019-09-10, title: 'test2'}...] 我已尝试使用以下嵌套映射: events = da
data = [{due_at: '2019-09-10', yards:[{name: 'test'},{name: 'test2'}]}...]
我希望迭代此日期以得出:
events = [{start: '2019-09-10', end: '2019-09-10, title: 'test'},{start: '2019-09-10', end: '2019-09-10, title: 'test2'}...]
我已尝试使用以下嵌套映射:
events = data.map(d => {
return d.yards.map(y => {
return {
start: d.due_at,
end: d.due_at,
title: y.name
};
});
});
这在一定程度上是可行的,但我一直得到一个嵌套数组,如下所示:
[[{start: '2019-09-10', end: '2019-09-10, title: 'test'},{start: '2019-09-10', end: '2019-09-10, title: 'test2'}...]]
如何调整映射代码以输出单个对象数组?与其使用嵌套映射生成二维返回值,不如声明一个新数组并只推送所需的值。这将产生一个一维数组 常数数据=[ {截止日期:2019-09-10,码:[{name:test},{name:test2}]} ]; 常量结果=[]; data.forEachd=>{ d、 forEachy=>{ 结果:推{ 起点:d.due_在, 完:d.到期日, 标题:y.name }; }; }; 控制台。日志结果 您可以在外部映射函数上使用.flatMap而不是.map来将内容从内部映射函数展平到结果数组中: 常数数据=[{ 到期日:2019-09-10, 码数:[{ 名称:“测试” }, { 名称:“test2” }] }]; const events=data.flatMapd=>{ 返回d.yards.mapy=>{ 返回{ 起点:d.due_在, 完:d.到期日, 标题:y.name }; }; };
console.logevents;完美,正是我想要的@Pedro不用担心,.flatMap是JS的一项新功能,因此目前并非所有浏览器都支持它。我已使用.reduce添加了一个版本,该版本具有更好的浏览器支持