按第一个字母对数组进行分组 - 使用 groupBy 方法 (Lodash)
Group an array by its first letter - using groupBy method (Lodash)
我想根据第一个字母(按字母顺序)对数组进行分组,因此输出看起来像这样:
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
[
{ 'A' : [ 'Apple', 'Ape' ] },
{ 'B': [ 'Banana', 'Bag' ] },
{ 'C': [ 'Crab', 'Cupboard' ] },
{ 'D': [ 'Dog', 'Dare' ] }
]
我如何使用 groupBy Lodash 方法执行此操作?如果需要,它还可以扩展到字母表中的所有字母吗?你也会使用 forEach Lodash 方法吗?
提前致谢!
使用 lodash,您可以使用多种方法来获取它。
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
const grouped = _.map(_.entries(_.groupBy(words, _.first)), ([k,v]) => ({[k]:v}))
console.log(grouped);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
与普通老JavaScript:
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
const grouped = Object.values(words.reduce((acc,word) => (acc[word[0]] ??= {[word[0]]: []}, acc[word[0]][word[0]].push(word), acc), {}))
console.log(grouped);
我想根据第一个字母(按字母顺序)对数组进行分组,因此输出看起来像这样:
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
[
{ 'A' : [ 'Apple', 'Ape' ] },
{ 'B': [ 'Banana', 'Bag' ] },
{ 'C': [ 'Crab', 'Cupboard' ] },
{ 'D': [ 'Dog', 'Dare' ] }
]
我如何使用 groupBy Lodash 方法执行此操作?如果需要,它还可以扩展到字母表中的所有字母吗?你也会使用 forEach Lodash 方法吗?
提前致谢!
使用 lodash,您可以使用多种方法来获取它。
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
const grouped = _.map(_.entries(_.groupBy(words, _.first)), ([k,v]) => ({[k]:v}))
console.log(grouped);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
与普通老JavaScript:
const words = ['Apple', 'Ape', 'Banana', 'Bag', 'Crab', 'Cupboard', 'Dog', 'Dare'];
const grouped = Object.values(words.reduce((acc,word) => (acc[word[0]] ??= {[word[0]]: []}, acc[word[0]][word[0]].push(word), acc), {}))
console.log(grouped);