Functional programming 使用lodash隐式函数链接处理对象数组
我想使用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
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)
;