是否可以将 Lodash 数组方法与 es6 数组方法链接起来

问题描述 投票:0回答:2

我想将 Lodash 数组方法与 ES6 数组方法互换链接,而不使用

_chain
并采用函数式编程风格。

我想这样做:

import {flatMap} from 'lodash';

const result = my2DimensionalArray.flatmap().map(i => {
 return `${i}-blergh`;
});

我知道如果不扩展原生数组原型,这实际上是不可能的。

我目前的工作方式是这样的:

import _ from 'lodash';

_(my2DimensionalArray).flatMap().value().map(i => {
  return `${i}-blergh`;
});

我可以以某种方式改进这个吗? 其他人如何做同样的事情?

javascript functional-programming lodash
2个回答
3
投票

因为

_.flatMap()
返回一个数组,你可以像这样使用JS映射:

const arr = [[1, 3, 5, 7], [9, 11, 13, 15]];

const result = _.flatMap(arr) // returns an array
  .map(i => `${i}-blergh`); // JS map

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

如果您使用的是 lodash 的链,请将

_.map()
移动到链的末尾来使用 lodash 的
_.value()

const arr = [[1, 3, 5, 7], [9, 11, 13, 15]];

const result = _(arr) // start a chain
  .flatMap()
  .map(i => `${i}-blergh`) // lodash's map
  .value(); // end the chain

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

注意: 数组方法 - map、filter、reduce、reduceRight、forEach、every 和 some 是 ES5 的一部分,而不是 ES6。


0
投票

ECMAScript 2019 引入了

flat
flatMap
,因此现在可以使用本机方法完成此类操作:

const arr = [[1, 3, 5, 7], [9, 11, 13, 15]];
const result = arr.flat().map(i => `${i}-blergh`);
console.log(result);

© www.soinside.com 2019 - 2024. All rights reserved.