javascript - Lodash 将对象数组转换为数组

标签 javascript lodash

我有这样的对象数组:

[ { season: 1,
    episodes:
     [ 
       {
        title:'ep1 title',
        season:1,
       },
       {
        title:'ep2 title',
        season:1,
       },
       {
        title:'ep3 title',
        season:1,
       }] },
  { season: 2,
    episodes:
     [ {
        title:'ep1 title',
        season:2,
       },
       {
        title:'ep2 title',
        season:2,
       },
       {
        title:'ep3 title',
        season:2,
       } ] },
  { season: 3,
    episodes:
     [ {
        title:'ep1 title',
        season:3,
       },
       {
        title:'ep2 title',
        season:3,
       },
       {
        title:'ep3 title',
        season:3,
       } ] },
]

我想用 loadsh 把它变成这样的数组:

[
  {
    title:'ep1 title',
    season:1,
  },
  {
    title:'ep2 title',
    season:1,
  },
  {
    title:'ep3 title',
    season:1,
  },
  {
    title:'ep1 title',
    season:2,
  },
  {
    title:'ep2 title',
    season:2,
  },
  {
    title:'ep3 title',
    season:2,
  },
  {
    title:'ep1 title',
    season:3,
  },
  {
    title:'ep2 title',
    season:3,
  },
  {
    title:'ep3 title',
    season:3,
  }
]

我只想获取剧集 使用 lodash 将对象转换为数组 如何使用 lodash 将两个数组合并为一个对象 lodash:计算对象数组中的值

最佳答案

如果真的非要lodash,可以用_.flatMap :

var flat = _.flatMap(data, 'episodes');

var data = [ { season: 1, episodes:[{title:'ep1 title',season:1,},{title:'ep2 title',season:1,},{title:'ep3 title',season:1,}] },{ season: 2,episodes:[ {title:'ep1 title',season:2,},{title:'ep2 title',season:2,},{title:'ep3 title',season:2,} ] },{ season: 3,episodes:[ {title:'ep1 title',season:3,},{title:'ep2 title',season:3,},{title:'ep3 title',season:3,} ] },];

var flat = _.flatMap(data, 'episodes');

console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

但是自 EcmaScript 2019 以来,JavaScript 有了自己的 flatMap ,所以你可以这样做:

var flat = data.flatMap( o => o.episodes );

var data = [ { season: 1, episodes:[{title:'ep1 title',season:1,},{title:'ep2 title',season:1,},{title:'ep3 title',season:1,}] },{ season: 2,episodes:[ {title:'ep1 title',season:2,},{title:'ep2 title',season:2,},{title:'ep3 title',season:2,} ] },{ season: 3,episodes:[ {title:'ep1 title',season:3,},{title:'ep2 title',season:3,},{title:'ep3 title',season:3,} ] },];

var flat = data.flatMap( o => o.episodes );
console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }

如果 flatMap 不可用,您可以使用:

var flat = [].concat(...data.map( o => o.episodes ));

var data = [ { season: 1, episodes:[{title:'ep1 title',season:1,},{title:'ep2 title',season:1,},{title:'ep3 title',season:1,}] },{ season: 2,episodes:[ {title:'ep1 title',season:2,},{title:'ep2 title',season:2,},{title:'ep3 title',season:2,} ] },{ season: 3,episodes:[ {title:'ep1 title',season:3,},{title:'ep2 title',season:3,},{title:'ep3 title',season:3,} ] },];

var flat = [].concat(...data.map( o => o.episodes ));
console.log(flat);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - Lodash 将对象数组转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504169/

相关文章:

javascript - 循环遍历数组/函数时的换行符

javascript - Grunt Lodash 模板可以在 Gruntfile.js 任务中使用吗?

javascript - 如何展平对象的嵌套嵌套数组

javascript - lodash 中的值方法未按预期工作

javascript - lodash 怎么会有一个驻留在不在存储库中的目录中的构建脚本?

javascript - 有没有更干净的方法来消除方法的抖动?

javascript - array.reduce( ) 在多个参数上使用索引

php - 向特定用户发送推送通知

javascript - PaperJS - 如何连接与任何给定项目距离为 X 的所有项目? (元素互动性)

javascript - 在运行时更新 CSS 文件,更改字体大小、背景颜色和窗口大小