javascript - Groupby并修改对象数组上的记录
问题描述
const data = [
{
master_id: 1234,
serial: 123455768769
},
{
master_id: 1236,
serial: 123455768799
},
{
master_id: 1234,
serial: 123455768779
},
{
master_id: 1235,
serial: 123455768789
}
];
const serialNos = [123455768769, 123455768779,123455768789];
const expected = [{1234: [123455768769, 123455768779]}, {1235: [123455768789]}];
const result = _.groupBy(data.filter(eachData => serialNos.includes(eachData.serial)), 'master_id');
console.log(result);
在写了这么多之后我被卡住了,不知道如何进一步实现预期的输出。
逻辑:过滤data
基于serialNos
它们,然后使用 master_id 按它们分组,并像预期的输出一样修改它们。我被困在第三个修改部分。
我在我的项目中使用打字稿和下划线 js。
解决方案
您可以链接序列并首先获取一个子集,然后在分组后映射所需的属性。
const
data = [{ master_id: 1234, serial: 123455768769 }, { master_id: 1236, serial: 123455768799 }, { master_id: 1234, serial: 123455768779 }, { master_id: 1235, serial: 123455768789 }]
serialNos = [123455768769, 123455768779, 123455768789],
result = _
.chain(data)
.filter(eachData => serialNos.includes(eachData.serial))
.groupBy('master_id')
.map((array, key) => ({ [key]: _.map(array, _.property('serial')) }))
.value();
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
推荐阅读
- python - 如何打印从列表中随机选择的内容?
- sql - 如何从 MS Access 中破译复杂的 DATEADD 函数
- postgresql - 公有子网上的 AWS RDS
- ruby-on-rails - 检查是否传递了 ruby 关键字参数 (RUBY)
- c# - 为什么 C# 3D imgae 画笔在以编程方式应用于 3d 模型时不起作用?
- python - python:当字符串包含多个零时,检查整数字符串是否大于零不起作用
- python - 如何用另一个分类变量列表替换不同的分类变量
- powershell - 将计算机列表导出到 CSV 有困难
- python - Python中异常处理的装饰器
- javascript - 如何使用 selenium for java 从 chrome 获取本地存储数据?