【问题标题】:How Can I Re-scale An Array To A Range Of Values in Javascript?如何在 Javascript 中将数组重新缩放为一系列值?
【发布时间】:2020-03-13 15:56:30
【问题描述】:

我想使用可以指定最小和最大输入范围以及最小和最大输出范围的函数重新缩放二维数组。例如,我们想将 0 到 8 的值重新缩放为 0 到 1。

const scale = (num, in_min, in_max, out_min, out_max) => {
    return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

var array_scaled = orignal_array.map(scale(num, 0, 8, 0, 1));

}

代码产生以下错误: ReferenceError: num 未定义

从地图中调用比例函数的正确语法是什么?

【问题讨论】:

    标签: javascript arrays rescale


    【解决方案1】:

    我猜map的参数一定是一个函数,即:

    var array_scaled = orignal_array.map(num=>scale(num, 0, 8, 0, 1));
    

    【讨论】:

    • 感谢您解决了我的语法错误。但是,映射返回 Nan,而不是新的二维数组。你知道为什么吗?
    • 我最终这样做了:array_scaled= Array.from(Array(n_dimension), () => new Array(m_dimension)); for (var row = 0; row
    【解决方案2】:

    Array.prototype.map() 接受回调函数作为其第一个参数。

    看起来num没有定义为回调函数scale()的数组的当前元素

    试试var array_scaled = orignal_array.map(array_num => scale(array_num, 0, 8, 0, 1));

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多