gpt4 book ai didi

javascript - 将数组大小调整为指定长度并均匀分布索引值

转载 作者:行者123 更新时间:2023-11-28 06:09:01 25 4
gpt4 key购买 nike

我的数学很差,所以如果这是非常明显的,请原谅我,我做了研究,但找不到任何符合我需要的东西。

我正在尝试让我的音频分析器在宽度上做出响应。事实证明这非常困难,因为frequency array有固定的大小。

通过计算每个条形的宽度以及 Canvas 的宽度,我可以轻松找出其中可以容纳多少个条形。

假设 Canvas 宽 20 像素,每个条宽 4 像素(包括之间的空间)。这意味着 Canvas 内可以容纳 5 个条形。因此,利用这些信息,我们可以创建一个函数,将频率数组长度调整为 5,并将频率均匀分布到这 5 个索引中。

这样就不会遗漏任何频率范围,并且分析仪可以调整为任意宽度,并且仍然填充空间。

function resize(array, integer) {
...
return result;
}

array = [1, 2, 3, 4, 5... 100] // Array that goes from 1 to 100 (100 indexes)

resize(array, 10) // [1, 10, 20, 30, 40, 50, 60, 70, 80, 90]

这是 Canvas 上显示的原始数组(虚线条是 Canvas 外的条)

enter image description here

现在我想调整数组的大小,使条形适合 Canvas ,如下所示(本例中为 20 个条形)

enter image description here

我真的希望我在这里能很好地解释自己,这很难解释

最佳答案

这个解决方案有效。现在。返回原始数组的第 n 个值 factor

function arrayResize(array, integer) {
var factor = array.length / integer;

return Array.apply(null, { length: integer }).map(function (_, i) {
return array[Math.floor(i * factor)];
});
}

var array = Array.apply(null, { length: 100 }).map(function (_, i) { return Math.floor(i / 10); });

document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(arrayResize(array, 5), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(arrayResize(array, 10), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(arrayResize(array, 20), 0, 4) + '</pre>');

关于javascript - 将数组大小调整为指定长度并均匀分布索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36588372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com