[英]sum of uint8array javascript
我試圖求和,然后求平均數據流,這里有一些代碼。
var getAverage = function(dataArray){
var total,
sample = dataArray.length,
eArray = Array.prototype.slice.call(dataArray);
for (var i = 0; i< sample; i++) {
total+= eArray[i];
}
return total;
}
var output = function(){
//source data
var dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
var average = getAverage(dataArray);
$('#average').text(average);
window.requestAnimationFrame(output);
數組中的每個元素都返回一個數字,但仍返回NaN。 救命?
設置總數= 0; 當前默認為未定義。 未定義+數字= NaN,而NaN +數字= NaN。
聲明的變量total
是undefined
,這意味着當添加數字時,它將創建NaN
(非數字)。
同樣,類型化數組(ArrayBuffer /視圖)和數組也不相同,將類型化數組轉換為普通數組會使迭代變慢,因為類型化數組是實際的字節緩沖區,而數組是(節點)列表。 那除了轉換成本本身。
只需直接添加即可。 請記住,將總和除以長度,當然要初始化total
:
var getAverage = function(dataArray){
var total = 0, // initialize to 0
i = 0, length = dataArray.length;
while(i < length) total += dataArray[i++]; // add all
return length ? total / length : 0; // divide (when length !== 0)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.