【问题标题】:Math.min/max.apply set values as percent of new rangeMath.min/max.apply 将值设置为新范围的百分比
【发布时间】:2014-07-27 12:58:46
【问题描述】:

我有一个值的数组列表

var v=[0.009865,0.009866,0.009309,0.009831,0.009919,0.009965,0.009806,0.009509,0.009731,0.009888];

我计算两者之间的最小值、最大值和差值来确定范围

var max=Math.max.apply(this,v)/100;
var min=Math.min.apply(this,v)/100;
var dif=max-min;

console.dir({'max':max,'min':min,'dif':dif});

console.dir 显示

max: 0.00009965
min: 0.00009308999999999999
dif: 0.000006560000000000005

然后我循环遍历每个值,尝试将它们转换为范围内的百分比

(通过找出当前值比最小值大多少,将答案除以差异并将结果乘以 100 得到百分比)

for (var i=0;i<v.length;i++){
    v[i]=((v[i]-min)/dif)*100;
    console.log(v[i]);
    }

console.log 显示我真的不希望看到的值(预计在 0-100 之间)

148962.04268292672
148977.28658536574
140486.43292682915
148443.74999999985
149785.21341463405
150486.43292682915
148062.65243902427
143535.21341463405
146919.35975609746
149312.65243902427

我做错了什么?

我对数学的引用:https://math.stackexchange.com/questions/51509/how-to-calculate-percentage-of-value-inside-arbitrary-range

【问题讨论】:

  • 你能在一个功能中提供所有功能吗
  • 这与我的问题无关
  • 设置maxmin为什么要除以100?这就是问题所在。
  • 为什么你的循环从01而不是零开始?
  • @T.J.Crowder:这可能是错误的(应该是Math),但这无关紧要,因为minmax 不在乎

标签: javascript math range


【解决方案1】:

设置maxmin时不要除以100

var max=Math.max.apply(this,v);
var min=Math.min.apply(this,v);

输出:

84.7560975609757
84.90853658536585
0
79.57317073170726
92.9878048780489
100
75.76219512195132
30.487804878048845
64.32926829268297
88.26219512195112 

【讨论】:

    【解决方案2】:

    您可以使用Array.map 来实现这一点,例如:

    var v= [0.009865,0.009866,0.009309,0.009831,0.009919,0.009965,
            0.009806,0.009509,0.009731,0.009888]
       ,vv= v.map( function (a) { 
                    return ( ( Math.abs(a-this.min) / this.diff() )*100 )
                            .toFixed(2); 
                   },
                   {min: Math.min.apply(null, v), 
                    max: Math.max.apply(null, v),
                    diff: function () { return this.max-this.min; } }
                  );
     // => returns vv
     // ["84.76", "84.91", "0.00", "79.57", "92.99", "100.00", 
     //  "75.76", "30.49", "64.33", "88.26"]
    

    MDN documentationArray.prototype.map

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 2021-02-18
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多