簡體   English   中英

將數組大小調整為指定長度並均勻分配索引值

[英]Resize array to specified length and evenly distribute value of indexes

我很擅長數學,所以請原諒我,如果這是非常明顯的,我確實做了研究,找不到符合我需要的東西。

我正在努力讓我的音頻分析儀在寬度上做出響應。 事實證明這非常困難,因為頻率陣列具有固定的尺寸。

通過計算每個條的寬度,並相對於畫布的寬度,我可以很容易地找出它內部可以容納多少條。

因此,假設畫布寬度為20像素,每個條形寬度為4像素(包括間距)。 這意味着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]

這是畫布上顯示的原始數組(虛線條是畫布外部的數組)

在此輸入圖像描述

現在我想調整數組的大小,使條形像這樣適合畫布(本例中為20條)

在此輸入圖像描述

我真的希望我在這里解釋得很好,這很難解釋

此解決方案有效。 現在。 返回原始數組的第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>'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM