簡體   English   中英

如何將fourier.getEnergy() 的每個元素添加到數組中?

[英]How can I add each element of fourier.getEnergy() into an array?

試圖制作一個可視化工具,fft.getEnergy()(一個 p5.js 聲音庫函數)中的值返回每個頻率的音量。 我想取出這些卷中的前 1024 個並將它們存儲在一個數組中,這樣我就可以將每個數字 map 放到一個圖表中。 問題是當我嘗試將它們添加到數組時,數組僅存儲 1 個值 1024 次,而不是前 1024 個不同的值。

這是 getEnergy() 值的快照: https://imgur.com/a/7zSV9DK

這是我在嘗試推送前 1024 個值時嘗試制作的數組的快照: https://imgur.com/a/cs3FA0U這表明它正在打印一個值 1024 次。

var arrays = []
    for(var i = 0; i < 1024; i++)
    {       

        arrays.push(energy)  //energy = fft.getEnergy("bass")
       
    }

  
   console.log(arrays)

根據我在此頁面上閱讀的內容https://p5js.org/reference/#/p5.FFT/getEnergy

getEnergy("bass")返回一個“預定義的頻率范圍”,我猜它是從0bass max limit的預定義頻率的能量數組。

您在for循環中所做的是將頻率結果數組推送到結果數組 1024 次(而不是您想要的 1024 個單獨的值)。

所以你想要做的是

const resultArray = [];

for (let i=0; i<1024; i++) {
  resultArray.push(energy[i]);
}

console.log(resultArray);

(請注意,我不使用var 。我建議您查看var | let | const之間的區別,並且您也了解 scope 的概念。)

然而,上面的這段代碼也不是很好。 我建議你看看 JS 中的Array object 是什么,並查看所有操作它的方法。 使用slice方法會更好。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

const resultArray = energy.slice(1024);

然后對數組進行排序,您可以使用sort方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

(雖然要注意“默認排序順序是升序,建立在將元素轉換為字符串的基礎上”)

暫無
暫無

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

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