此问题作为纯JS答案here。但仅仅是因为我想精通Lodash,所以我在寻找Lodash解决方案。
假设我有一个看起来像这样的数组:
[[a, b, c], [d, e, f], [h, i, j]]
我想将每个数组的第一个元素作为自己的数组:
[a, d, h]
使用Lodash进行此操作最有效的方法是什么?谢谢。
答案 0 :(得分:3)
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>