我有一个原始数组,如下所示:
const original = [
{
type: 'foo'
},
{
type: 'foo'
},
{
type: 'bar'
}
]
Run Code Online (Sandbox Code Playgroud)
然后我通过 lodash groupBy 和 iteratee 运行它,(val) => val.type得到:
{
bar: [{
type: "bar"
}],
foo: [{
type: "foo"
}, {
type: "foo"
}]
}
Run Code Online (Sandbox Code Playgroud)
有没有一种 lodash 方法可以将每个键的属性转换/减少到它们的 Array.length 中?
{
bar: 1,
foo: 2
}
Run Code Online (Sandbox Code Playgroud)
您可以使用_.countBy()直接获得结果:
const original = [{"type":"foo"},{"type":"foo"},{"type":"bar"}]
const result = _.countBy(original, 'type')
console.log(result)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)
要在对数组进行分组后获得相同的结果,请使用_.mapValues(),并使用 获取每个子数组的长度_.size():
const original = [{"type":"foo"},{"type":"foo"},{"type":"bar"}]
const result = _.mapValues(
_.groupBy(original, 'type'),
_.size,
)
console.log(result)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)