![](/img/trans.png)
[英]How can I add an array to an object but filter out all but one column for each array element?
[英]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")
返回一個“預定義的頻率范圍”,我猜它是從0
到bass 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.