javascript - 将对象数组转换为具有分组键作为数组的对象的简单方法
问题描述
我正在寻找一种简单的方法来执行以下操作。我尝试过这样做lodash.reduce
,但它很笨重,有没有更简单的方法。
从:
[{a: 'meow'}, {a: 'woof'}]
至:
{a: ['meow', 'woof']}
解决方案
您可以使用lodash#assignWith将所有属性各自的值分配到一个对象中,并使用自定义函数来确定您希望如何构造对象。
const result = _.assignWith({}, ...data, (v = [], s) => v.concat(s));
注意:为了确保我们不会改变data
数组中的任何对象,我传递了一个空对象作为第一个参数来充当目标对象。
const data = [
{ a: 'meow' },
{ a: 'woof', k: 'hey' },
{ k: 'yo', d: 'hehe' },
{ d: 'wazup', q: 'ohoho' }
];
const result = _.assignWith({}, ...data, (v = [], s) => v.concat(s));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
推荐阅读
- prolog - 为什么 prolog 不会在 cut 时停止?
- python - Python imaplib 使用 \\Deleted 标志恢复电子邮件并移至垃圾箱
- ios - How do I improve the accuracy of number of weekdays in a month calculation?
- python - 如果事务由两行或更多行表示,是否有办法使用 python 对事务(日志)数据进行聚类?
- python - 如何获得分数以更新并显示在屏幕上?
- regex - pandas df中数字的条件替换
- reporting-services - SSRS - 如何计算由表达式生成的列中的值?
- node.js - Firestore 安全规则:如何通过安全规则强制在 Firestore 文档中创建的字段数?
- python - 使用 Azure 机器学习服务训练大型模型时如何克服 TrainingException?
- php - $str[n] 可以用于汉字字符串吗?