基于子数组javascript重写数组 [英] Rewrite array based on child array javascript

查看:49
本文介绍了基于子数组javascript重写数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组,如

{
  "campaigns": [{
      "name": "1st Campaign",
      "books": [{
          "title": "1st book",
          "primary_isbn": "isbn1"
        },
        {
          "title": "2nd book",
          "primary_isbn": "isbn2"
        },
        {
          "title": "3rd book",
          "primary_isbn": "isbn3"
        }
      ]
    },
    {
      "name": "2nd cam",
      "books": [{
          "title": "4th book",
          "primary_isbn": "isbn4"
        },
        {
          "title": "5th book",
          "primary_isbn": "isbn5"
        }
      ]
    }
  ]
}

从上面的数组中,我需要创建一个新数组,其中每个广告系列(父级)数据都转换为每本书的项目数。因此对于第一个项目
第一个广告系列应转换为3个项目,因为有3本书。所以我的新数组应该是

From above array i need to create new array where each campaign (parent) data converted to number of items per book. So for first item 1st campaign should be converted to 3 items as there are 3 books. so my new array should be

{
  "campaigns": [{
      "name": "1st campaign"
      "title": "1st book",
      "primary_isbn": "isbn1"
    },
    {
      "name": "1st campaign"
      "title": "2nd book",
      "primary_isbn": "isbn2"
    },
    {
      "name": "1st campaign"
      "title": "3rd book",
      "primary_isbn": "isbn3"
    },
    ...
  ]
}

与第二次广告系列的结构相同。
我不确定如何解决这个问题

And same structure for 2nd campaign. I am not sure how to approach this problem

我尝试过使用lodash

I tried this using lodash

_.flattenDeep(data.campaigns.books)


推荐答案

您可以使用 flatMap 地图 像这样:

You could use flatMap and map like this:

const input = {campaigns:[{name:"1st Campaign",books:[{title:"1st book",primary_isbn:"isbn1"},{title:"2nd book",primary_isbn:"isbn2"},{title:"3rd book",primary_isbn:"isbn3"}]},{name:"2nd cam",books:[{title:"4th book",primary_isbn:"isbn4"},{title:"5th book",primary_isbn:"isbn5"}]}]};

const campaigns = 
  input.campaigns.flatMap(({ name, books }) => books.map(b => ({ ...b, name })))

console.log({ campaigns })

这篇关于基于子数组javascript重写数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆