是否可以使用es6 Array方法链接Lodash Array方法

时间:2016-12-18 05:34:01

标签: javascript functional-programming lodash

我希望在不使用_chain和函数式编程风格的情况下,将Lodash Array方法与ES6 Array方法互换。

我想这样做:

import {flatMap} from 'lodash';

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

如果没有扩展原生Array Protoytpe,我觉得这是不可能的。

我目前正在这样工作:

import _ from 'lodash';

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

我能以某种方式改善这种情况吗?其他人如何做同样的事情?

1 个答案:

答案 0 :(得分:3)

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

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。