javascript - Javascript - 从对象数组中减去总数的最佳逻辑/性能方面
问题描述
我正在尝试为这种逻辑想出更好的方法。基本上,我有 3 层。每一层都有一个限制数量。例如:
对于第 1 层,限制为 5 对于第 2 层,限制为 8 对于第 3 层,限制为 15。
[
{ title: 'Tier I', amount: 5, fullfiled: x, price: 10 },
{ title: 'Tier II', amount: 8, fullfiled: y, price: 20 },
{ title: 'Tier III', amount: 15, fullfiled: z, price: 30 },
]
来自我后端的只是总计。所以让我们假设它返回 10。我需要得到差异来确定用户在哪一层。在这种情况下,第 2 层,因为对于第 1 层,将满足 5 的限制。对于第 2 层,将仅满足 5 / 8,因此Y将为3,如下所示:
我需要得到这些限制之间的差异,以便我可以用数字替换 X、Y 和 Z。我想要一个优雅的方法来解决这个问题的建议。我试图有一个有限制的数组并减去以获得差异。例如:
let totalCompleted = 10;
const limitTier = [5, 8, 15]
limitTier.map(value => {
// logic ? totalCompleted - value;
})
解决方案
尝试使用 reducer 而不是 map。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
与此类似的东西:
const { tiers } = [
{ title: 'Tier I', amount: 5, price: 10 },
{ title: 'Tier II', amount: 8, price: 20 },
{ title: 'Tier III', amount: 15, price: 30 },
].reduce(({ rest, tiers } , tier) => ({
rest: Math.max(rest - tier.amount, 0),
tiers: [
...tiers,
{
...tier,
fullfiled: Math.min(tier.amount, rest),
}
]
}), { rest: 10, tiers: [] })
推荐阅读
- android - Android Studio 中的依赖项问题
- javascript - 图像元素在 src 更改时变为空?幻灯片
- python - 如何使用 Python 将唯一附件通过电子邮件发送给多个唯一收件人?
- c++ - 在 std::map 中返回 std::vector
- python - 如何使矩阵填充行和列的序列
- c# - OperationContext.Current 在 .net 核心中为空
- docker - 在cloudera quickstart docker image中将python脚本与mysql metastore连接时遇到问题
- angular - RxJs 动态 debounceTime 不是动态的
- javascript - 为什么 CSS 动画突然结束?
- reactjs - 如何将数据库中的数据插入到 MDB 表中?