javascript - 根据 100 max 计算数组

标签 javascript arrays

假设我有一个这样的 JS 数组...

var newArray = [20,182,757,85,433,209,57,828,635];

我想使用此数据创建一个条形图,其中最高条形的高度 == 100。 因此,需要将 828 值柱设置为 100,其余柱需要相对于该柱进行计算,并计算为最接近的整数。我不确定该怎么做?

有没有办法使用循环从上面的数组创建一个新数组?那我可以使用新数组吗?

最佳答案

首先,计算最大值:

var max = Math.max.apply(Math, newArray.map(Math.abs));
// will do `Math.max(300, 20, 182, ...)`
// if `newArray` is `[-300, 20, 182]`

然后,将每个元素除以该值,乘以 100,然后向下舍入,使最高值变为 100:

var normalized = newArray.map(function(v) {
  return Math.round(v / max * 100);
});

.map 本质上是一个循环,但循环是在内部完成的,因此您可以编写更简洁的代码。请注意它是 ES5,因此您需要为旧版浏览器提供一个 shim。

关于javascript - 根据 100 max 计算数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547765/

相关文章:

javascript - 自动从一个部分向上或向下滚动到另一个部分

javascript - 如何防止在某些情况下显示剑道工具提示?

javascript - 如何获取谷歌地图apiv3中新编辑的多边形坐标

javascript - 如何在多个地方使用输入选择器

arrays - 如果哈希内容不在数组中,则拒绝它们

Java 不包括 100 个储物柜中的 100 个

javascript - 从多个 TreeView 中获取所有子节点的 ID(跳过父节点 ID)。如何?

C文本处理: Output Wrong Size

c++ - 通过 (char* bar) 和 (char are[ ]) 传递 char 数组是否相同? C++

php - 在对象数组中取消设置对象