Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS nested array.map_Javascript_Arrays - Fatal编程技术网

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添加了一个版本,该版本具有更好的浏览器支持