【发布时间】:2019-04-10 00:59:13
【问题描述】:
在 NodeJS 服务中,我有一个包含具有以下属性的对象的数组:
- batchType:字符串
- batchId:字符串(是一个哈希)
- transactionId:字符串(它是一个哈希)
这个数组存储了不同批次的所有交易。
基本上我需要的是能够从数组中获取 N 个项目,但要遵守某些规则:
- 每种批次至少获得 1 件商品
- 每个 batchId 至少获得 1 个项目
- 有时数组可能只有一种类型的批次
这是数组的一个例子:
let batchTransactionsArray = [
{ batchType: 'type1', batchId: '123', transactionId: 'ffasf23' },
{ batchType: 'type1', batchId: '312', transactionId: '423' },
{ batchType: 'type1', batchId: '123', transactionId: '534' },
{ batchType: 'type1', batchId: '312', transactionId: '86' },
{ batchType: 'type2', batchId: '111', transactionId: '97' },
{ batchType: 'type1', batchId: '312', transactionId: '1945' },
{ batchType: 'type1', batchId: '123', transactionId: '79' },
{ batchType: 'type1', batchId: '312', transactionId: '79' },
{ batchType: 'type3', batchId: '425', transactionId: '1555645' },
{ batchType: 'type1', batchId: '123', transactionId: 'fg5' },
{ batchType: 'type1', batchId: '123', transactionId: 'jkh5' },
{ batchType: 'type1', batchId: '312', transactionId: '53j' },
{ batchType: 'type1', batchId: '111', transactionId: '4545' },
{ batchType: 'type2', batchId: '111', transactionId: '534l' },
{ batchType: 'type1', batchId: '111', transactionId: 'jkg435' },
{ batchType: 'type1', batchId: '111', transactionId: 'gfxg23' },
{ batchType: 'type1', batchId: '111', transactionId: '7asdt' },
{ batchType: 'type1', batchId: '222', transactionId: 'jdsa7' },
{ batchType: 'type3', batchId: '663', transactionId: '12423445' },
{ batchType: 'type1', batchId: '111', transactionId: '89saf6' },
{ batchType: 'type1', batchId: '111', transactionId: '12h3g' },
{ batchType: 'type1', batchId: '111', transactionId: '4h3k2hj' },
{ batchType: 'type3', batchId: '663', transactionId: '145' }
];
我需要的输出示例是(如果我想要数组中的 5 个事务):
[{ batchType: 'type1', batchId: '123', transactionId: '534' },
{ batchType: 'type1', batchId: '312', transactionId: '86' },
{ batchType: 'type2', batchId: '111', transactionId: '97' },
{ batchType: 'type2', batchId: '111', transactionId: '534l' },
{ batchType: 'type3', batchId: '663', transactionId: '145' }
]
transactionIds 的排序标准是随机的,没有特定的顺序要满足。
我尝试了一些 lodash 函数,例如 groupBy 和 sortBy,但还没有成功。
这是一个 jsfiddle,如果我在玩这个:https://jsfiddle.net/20jh3ze7/
非常感谢您的建议。
【问题讨论】:
-
请添加您尝试过的和无效的。
-
谢谢,我添加了一个 jsfiddle 链接
-
如果您需要 5 个项目,但 unqi id 超过 5 个,我们是否会超过 5 个最大项目或将其删除
-
谢谢合作过的各位,我会审核和测试你们的建议,让你们知道。再次感谢。
标签: javascript arrays node.js sorting lodash