【问题标题】:lodash flatten inner array (part of object) and generate as many object based on array lengthlodash 展平内部数组(对象的一部分)并根据数组长度生成尽可能多的对象
【发布时间】:2020-02-28 06:30:30
【问题描述】:

我有以下对象数组。我想根据内部“Y”数组长度生成尽可能多的对象。

var arr = [{x:1,y:[1,2]},{x:2,y:[1,2]}];

预期输出如下

var arr = [{x:1,y:1},{x:1,y:2},{x:2,y:1},{x:2,y:2}]

我尝试过的代码,但我不能

arr.forEach(item => {
  return item.y.forEach(inner => {
    return inner;
  })
})

【问题讨论】:

    标签: javascript arrays lodash


    【解决方案1】:

    您可以将flatMap() 与嵌套的map() 一起使用。在主数组上使用flatMap(),在该对象的y 属性上使用map()return 来自内部 map() 函数的对象,其 y 属性将不同,x 将相同

    var arr = [{x:1,y:[1,2]},{x:2,y:[1,2]}];
    const res = arr.flatMap(({x, y}) => y.map(y => ({x, y})));
    console.log(res)

    如果你不明白下面的flatMap是使用嵌套forEach的版本

    var arr = [{x:1,y:[1,2]},{x:2,y:[1,2]}];
    const res = [];
    arr.forEach(a => {
      a.y.forEach(y => {
        res.push({x: a.x, y});
      })
    })
    console.log(res)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2014-03-01
      相关资源
      最近更新 更多