使用Lodash获取数组中每个数组的第一个元素

时间:2018-11-29 20:11:13

标签: javascript arrays lodash

此问题作为纯JS答案here。但仅仅是因为我想精通Lodash,所以我在寻找Lodash解决方案。

假设我有一个看起来像这样的数组:

[[a, b, c], [d, e, f], [h, i, j]]

我想将每个数组的第一个元素作为自己的数组:

[a, d, h]

使用Lodash进行此操作最有效的方法是什么?谢谢。

5 个答案:

答案 0 :(得分:3)

您可以将_.map_.head一起用作第一个元素。

var data = [['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']],
    result = _.map(data, _.head);

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

或者只是键。

var data = [['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']],
    result = _.map(data, 0);

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

答案 1 :(得分:2)

如果要使用lodash:

const _ = require('lodash')
const arr1 = [[a, b, c], [d, e, f], [h, i, j]]
arr2 = _.map(arr1, e => e[0])

答案 2 :(得分:0)

https://lodash.com/docs/#filter

使用文档,查找每个功能。

let arr = [[a, b, c], [d, e, f], [h, i, j]]
let newArray = _.filter(arr, function(subArray){
   return subArray[0] // first element of each subArray
})
console.log(newArray)

这应该做到,但是我不明白为什么当香草javascript中存在几乎相同的过滤器功能时,为什么要使用lodash。

答案 3 :(得分:0)

使用lodash,您可以使用allowed_domains_.head_.first只是_.first的别名)并在{{1} }通过数组:

_.head
path

但是,如果您仅为此需要使用mapping,则只需使用 ES6 ES5

const data = [['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']]

console.log(_.map(data, _.first))
console.log(_.map(data, _.head))
console.log(_.map(data, 0)) // direct path

性能和实际代码实际上是相同的。

答案 4 :(得分:0)

您还可以使用许多lodash方法都支持的_.matchesProperty iteratee速记。

const data = [['a', 'b', 'c'], ['d', 'e', 'f'], ['h', 'i', 'j']];

const result = _.map(data, '[0]');

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