所以我有一个值数组,我需要按比例缩小,同时保持缩放值的最小值。
例如,假设我有一个值数组 [1, 1, 3, 5]
,最小比例因子为 .2
。
通过规范化数组,我们得到数组[.1, .1, .3, .5]
。但是,请记住最小比例因子,我们有值 [.2, .2, .3, .5]
,加起来为 1.2
,而不是1
。
我的想法是遍历数组并首先将所有低于最小值的值设置为最小值,保留一个进位变量以确定仍有多少需要重新分配给数组中超过该值的其他元素最低限度。
对于所有超过最小值的值,根据进位变量缩放它们的值,然后从它们的值中减去该值。
所以在上面的例子中,我们将从 .3
中减去 3/8 * .2
,并且 5/8 * .2
从 .5
得到 [.2, .2, .225, .375]
。
有没有其他方法可以更有效地做到这一点?还是另一种缩放剩余值的方法?
编辑:抱歉,缩放可能是不正确的术语,但最终数组的值将以这样的方式划分,即它们的值相对于总值发生变化。
我会解释一下具体的实现,这样问题可能会更清楚:
我有很多帖子,每个帖子在淡出之前要显示一定的时间,之后将显示下一个帖子。我希望帖子之间的延迟取决于每个帖子中的字数,但也至少限制为某个最小值。
显示所有帖子有一个总时间,并且时间应该在所有帖子之间分配。
最佳答案
I want the delay between posts to be dependent on the number of words within each post, but also constrained to be at least some minimum value.
There is a total amount of time for all of the posts to be shown, and the time is supposed to be split up between all of the posts.
您不能保证您会满足这两个要求。如果您有 30 个帖子,每个帖子必须显示至少 1 秒,而显示它们的时间只有 20 秒,那么不可能同时满足这两个要求。你必须:
- 延长总时间;或者
- 减少最短时间
关于javascript - 如何在保持最小值的同时缩放一组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026375/