假设我有一个这样的 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/