Groupby 并修改对象数组上的记录
Groupby and modify the records on array of objects
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);
我写了那么多之后卡住了,不知道如何进一步进行以达到预期的输出。
逻辑:
根据 serialNos
筛选 data
,然后使用 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>
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);
我写了那么多之后卡住了,不知道如何进一步进行以达到预期的输出。
逻辑:
根据 serialNos
筛选 data
,然后使用 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>