Javascript:遍历对象列表并缩放已知最小值和最大值之间的值

时间:2017-06-29 21:06:57

标签: javascript json scale

我有一个对象列表,我想在已知的最小值和最大值之间缩放值。因此,如果已知的最小值和最大值为100,800,我希望结果如下:

{'cat' : 1, 'dog' : 3, 'chimp' : 8} -> {'cat' : 100, 'dog' : 300, 'chimp' : 800}

Python / pandas实现如下所示

def scale_size(old_value):
        if numbers_df['raw_size'].max() == 1:
            return 150
        old_value = float(old_value)
        old_max = numbers_df['raw_size'].max()
        old_min = numbers_df['raw_size'].min()
        new_max = 150
        new_min = 20
        old_range = old_max - old_min
        new_range = new_max - new_min
        new_value =  (((old_value - old_min) * new_range) / old_range) + new_min

        return int(new_value)

2 个答案:

答案 0 :(得分:1)

您可以使用所需范围和给定范围的最大减去最小值来计算系数,并为对象中的每个值计算新值。

> plot(df[,3])

答案 1 :(得分:1)

您应该创建一个函数来将值从一个范围映射到另一个范围。为此,您应该执行以下操作:

  • 计算当前范围的最小值和最大值(例如"Module '"project/node_modules/@angular/core/index"' has no exported member 'Renderer2'.
  • 计算您要映射值的范围的最小值和最大值(例如(1,8)
  • 通过计算旧范围中的相对位置并将该相对位置应用于新范围,将现有值从一个范围映射到另一个范围

示例代码

我确信有更高效和/或更清晰的方法来实现这一目标,但这可能是您想要做的事情的一个不错的起点。另外,理论上您可以通过查找键值对中的最小值和最大值来计算当前范围的最小值和最大值,但这可能不适用于所有情况。

(100,800)