如何在 JavaScript 中标准化正数列表?

2023-11-22

我有一个充满正 int 值的数组,如何规范化该列表以使最大值始终为 100?先感谢您!


这个想法是首先找到数组中的最大数字(使用apply on Math.max),然后求最大数与 100 之间的比率。

之后,只需循环数组并将所有数字除以该比率即可:

var numbers = [3, 8, 45, 74, 123],
    ratio = Math.max.apply(Math, numbers) / 100,
    l = numbers.length,
    i;

for (i = 0; i < l; i++) {
    numbers[i] = Math.round(numbers[i] / ratio);
}

这是小提琴:http://jsfiddle.net/XpRR8/


Note:我在用着Math.round将数字四舍五入到最接近的整数。如果您更喜欢将它们保留为浮点数,只需删除函数调用即可:

for ( i = 0; i < l; i++ ) {
    numbers[i] /= ratio;
}

这是小提琴:http://jsfiddle.net/XpRR8/1/


如果不需要支持IE8及以下版本,可以使用Array.prototype.map():

var numbers = [3, 8, 45, 74, 123],
    ratio = Math.max.apply(Math, numbers) / 100;

numbers = numbers.map(function (v) {
    return Math.round(v / ratio);
});

这是小提琴:http://jsfiddle.net/XpRR8/2/


If you do支持IE8,但无论如何使用jQuery,你可以使用$.map()反而:

numbers = $.map(numbers, function (v) {
    return Math.round(v / ratio);
});

这是小提琴:http://jsfiddle.net/XpRR8/3/


Update:正如 @wvxvw 在下面的评论中指出的,如果您担心对参数数量施加人为限制的边缘实现apply将处理,然后使用循环而不是Math.max.apply。这是一个例子(假设两者都不Array.prototype.map nor $.map可用):

var numbers = [3, 8, 45, 74, 123],
    ratio = 0,
    i = numbers.length;

while (i--) numbers[i] > ratio && (ratio = numbers[i]);

ratio /= 100;
i = numbers.length;

while (i--) numbers[i] = Math.round(numbers[i] / ratio);

这是小提琴:http://jsfiddle.net/XpRR8/4/


如果你使用 ES6,这会变得简单得可笑:

var numbers = [3, 8, 45, 74, 123];
var ratio = Math.max(...numbers) / 100;

numbers = numbers.map(v => Math.round(v / ratio));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中标准化正数列表? 的相关文章

随机推荐

  • 如何计算两个字符串之间的差异?

    我想在 Delphi 中创建一个函数来计算两个字符串的不同级别 如果两个字符串相等 忽略大小写 则应返回 0 但如果不相等 则应返回不同字符的数量 此功能对于检查拼写非常有用 function GetDiffStringLevel S1 S
  • 在子jsp中设置父jsp变量

    我有一个父 jsp a jsp 其中包含另一个 jsp b jsp 我正在计算 b jsp 中的一些值 这些值需要在父 jsp a jsp 中使用 它将将此计算值传递给另一个 jsp 例如 c jsp 如何在该页面完全加载之前评估子 jsp
  • 在 Jenkins Docker Agent 中使用 testcontainers:容器无法启动,NoRouteToHostException

    我使用 Jenkins 声明性管道和 Docker Agents 来构建和测试我的软件 包括使用测试容器运行集成测试 我可以在我的开发环境中 不使用 Jenkins 运行我的 testcontainers 测试 但它们在 Jenkins 下
  • 更改iframe内iframe的src

    当我尝试更改 iframe 内的 Iframe 的 src 时 我在 Chrome 中遇到此问题 本地运行文件 收到此错误消息 错误 未捕获的安全错误 无法从 HTMLIFrameElement 读取 contentDocument 属性
  • 使用 Binding 作为 ConverterParameter

    我正在尝试使用值绑定作为转换器参数 如下面的代码片段所示
  • .htaccess 重写规则删除 RK=0/RS= 之后的所有内容

    我有一个网站收到大量对不存在页面的请求 所有请求都基于现有页面 但有RK 0 RS 在末尾加上一个随机字符串 例如 请求是 www domain com folder article RK 0 RS M9j32OWsFAC u8I6a0xO
  • 当顶级命名空间包含基类且内部命名空间包含子类时,C# 命名空间和类/子类命名约定

    我正在尝试为特定的工程应用程序设计一个类库 并且我正在尝试确保我的类和命名空间命名约定有意义 我有以下情况 namespace Vehicle class Wheel base class for Wheel objects class E
  • 如何使用 Rselenium 读取 html 表格?

    我正在使用 Rselenium 导航到网页 下面的代码就是这么做的 我没有提供网址 因为我在一家需要 VPN 连接的公司中使用该网址 RSelenium startServer require RSelenium remDr lt remo
  • 如何在python或java中将geotiff转换为jpg?

    我有一个具有 3bands 的 geotiff 图像 band1 2 是实际图像值 band3 是实例角度值 band1 2 是 float32 数据类型 下面的代码是我之前尝试过的 但它不起作用 我认为波段数据的范围太大 所以不 from
  • 使 WebWorkers 成为一个安全的环境

    为了寻求一个能够在浏览器中运行任意 javascript 代码的界面 而不会有一个典型的 yo mama 笑话大小的安全漏洞 Esailija建议使用网络工作者 它们在半沙盒环境中运行 没有 DOM 访问权限并且已经在浏览器内部 并且可以被
  • 如何模拟 Application 类来对 ViewModel 进行单元测试

    我有一个View Model延伸AndroidViewModel class MoveViewModel application Application AndroidViewModel application CoroutineScope
  • 创建 Excel 文件并另存为 PDF。 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃圾邮件 反而 描述问题以及迄今为止已采取哪些措施来解决该
  • jquery自动完成自动填充字段与第一个值并突出显示添加的部分

    我使用 jqueryui 自动完成插件和以下代码 this autocomplete source function request response ajax url clinic auto data term this term nam
  • Docker 卷安装在 Azure DevOps Pipeline 中不起作用

    Docker 卷安装在 Azure DevOps Pipeline 中不起作用 请在下面找到我的代码 我尝试了两种方法在管道中运行我的 docker 容器 请参阅下面 都返回空卷 卷安装没有发生 我不确定我在这里犯了什么错误 如果有人能帮助
  • UINavigationBar 标题标签文本

    是否可以让标题文本缩小以适应UINavigationBar in iOS 适用于没有自动布局的纵向 iPhone 应用程序 我正在动态设置标题栏 但有时文本太长 目前它只是用省略号将其截断 即 这是 我希望它能缩小文本 您可以创建自己的标题
  • TensorFlow map_fn 性能和内存使用

    我有一个函数的两个实现 用于计算减去迹线的弗罗贝尼乌斯范数 此函数适用于 4D 张量 x 的第 3 维中的所有向量 然后总结所有结果 我用它作为卷积网络的一部分 TensorFlow的版本是0 9 我的第一个实现使用 tf batch 函数
  • 如何在 SQL Server 中的 case 语句内执行 SUM()

    我想在 case 语句中添加一些计算以动态创建新列的内容 但出现错误 列 Test1 qrank 在选择列表中无效 因为它未包含在聚合函数或 GROUP BY 子句中 这是我正在处理的代码 case when test1 TotalType
  • 如何使用 Phusion Passenger 纠正此 ESM 错误?

    我正在尝试使用 Phusion Passenger 在生产服务器上启动我的 NodeJS API 我使用了最后的 ECM 语法来导入 导出我的模块 然而 当尝试访问我的 api 时 Passenger 返回此错误消息 Error ERR R
  • 绘制时间序列时将 x 轴标签设置为日期

    x read table text Qtr1 Qtr2 Qtr3 Qtr4 2010 1 8 8 0 6 0 3 0 2011 2 0 11 0 7 0 3 5 2012 2 5 14 0 8 0 4 2 2013 3 0 15 2 9 5
  • 如何在 JavaScript 中标准化正数列表?

    我有一个充满正 int 值的数组 如何规范化该列表以使最大值始终为 100 先感谢您 这个想法是首先找到数组中的最大数字 使用apply on Math max 然后求最大数与 100 之间的比率 之后 只需循环数组并将所有数字除以该比率即