Functional programming 使用lodash隐式函数链接处理对象数组

Functional programming 使用lodash隐式函数链接处理对象数组,functional-programming,lodash,Functional Programming,Lodash,我想使用lodash函数链接来迭代对象数组,并将每个对象值推送到一个新数组中 为此,我可以使用嵌套的forEach,但我知道有更好的方法 我想从以下位置转换此阵列: [ {a: 'foo', b: 'bar'}, {a: 'baz', b: 'foo2'}, {a: 'bar2', b: 'baz2'} ] 结果如下: [ 'foo','bar','baz', 'foo2', 'bar2', 'baz2' ] 有人能帮忙吗?根据阿伦·哈达德的评论,我想出了以下解决方案: con

我想使用lodash函数链接来迭代对象数组,并将每个对象值推送到一个新数组中

为此,我可以使用嵌套的
forEach
,但我知道有更好的方法

我想从以下位置转换此阵列:

[
 {a: 'foo', b: 'bar'},
 {a: 'baz', b: 'foo2'},
 {a: 'bar2', b: 'baz2'}
]
结果如下:

[
 'foo','bar','baz', 'foo2', 'bar2', 'baz2'
]

有人能帮忙吗?

根据阿伦·哈达德的评论,我想出了以下解决方案:

   const theArray = [
     {a: 'foo', b: 'bar'},
     {a: 'baz', b: 'foo2'},
     {a: 'bar2', b: 'baz2'}
    ];

    _(theArray)
    .flatMap(Object.values)

根据Aluan Haddad的评论,我提出了以下解决方案:

   const theArray = [
     {a: 'foo', b: 'bar'},
     {a: 'baz', b: 'foo2'},
     {a: 'bar2', b: 'baz2'}
    ];

    _(theArray)
    .flatMap(Object.values)

只是为了好玩,这里是如何做到这一点没有洛达斯

theArray.reduce( (acc,item) => acc.concat(Object.values(item)) , [] )
对于那些喜欢回收利用和关注体重的人来说

const concatWith = (fn,a,b) => a.concat(fn(b))
theArray.reduce( concatWith.bind(null,Object.values) , [] )
或者只使用咖喱功能

const curry = (fn, ...args) => 
  fn.length <= args.length ?  fn(...args) : curry.bind(null, fn, ...args) 

享受吧

只是为了好玩,以下是如何在没有lodash的情况下做到这一点

theArray.reduce( (acc,item) => acc.concat(Object.values(item)) , [] )
对于那些喜欢回收利用和关注体重的人来说

const concatWith = (fn,a,b) => a.concat(fn(b))
theArray.reduce( concatWith.bind(null,Object.values) , [] )
或者只使用咖喱功能

const curry = (fn, ...args) => 
  fn.length <= args.length ?  fn(...args) : curry.bind(null, fn, ...args) 

享受吧

\uuu0.flatMap(Object.values)
?它是一个内置的JavaScript函数。获取对象中的值数组。精彩的!感谢应该出现在下一版本的JavaScript中,所以您只需编写:
myObjects.flatMap(Object.values)
<代码>.\uu0.flatMap(Object.values)?它是一个内置的JavaScript函数。获取对象中的值数组。精彩的!感谢应该出现在下一版本的JavaScript中,所以您只需编写:
myObjects.flatMap(Object.values)