javascript - Lodash:将具有重复值的数组转换为具有重复出现次数的对象

标签 javascript arrays object underscore.js lodash

这是我的数组:

['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California']

lodash 中有没有一种方法可以将其转换为具有重复出现次数的对象,如下所示:

[
    {'name':'California', 'count':2},
    {'name':'Texas', 'count':3},
    {'name':'New York', 'count':1},
    {'name':'Missouri', 'count':1},
    {'name':'New Mexico', 'count':1},
]

我尝试了很多组合,但都没有成功。文档:https://lodash.com/docs#countBy

最佳答案

您可以只映射 _.countBy 的结果。

var array = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'],
    count = _.countBy(array),
    result = _.map(count, (v, k) => ({ name: k, count: v }));

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

结合_.chain

var array = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'],
    count = _
        .chain(array)
        .countBy()
        .map((v, k) => ({ name: k, count: v }));

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

关于javascript - Lodash:将具有重复值的数组转换为具有重复出现次数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232341/

相关文章:

c# - 对象是引用类型还是值类型?

javascript - 跨 JavaScript 类的所有实例的相同变量

java - 将构造函数与 Integer 一起使用

javascript - jquery - 纯数字文本字段

javascript - 更改输入字段或文本区域中选定的文本

javascript - `react-query` 突变 onSuccess 函数没有响应

javascript - 如何防止grails中的表单远程提交?

algorithm - M 位置圆移 N 大小数组的最快算法

Java传递数组错误

java - 使用 1 个 for 循环将整数插入数组