我试着和然后平均一个数据流,这里的一些代码。
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。帮助?
发布于 2015-05-16 00:31:28
声明的变量total是undefined,这意味着当一个数字被添加到它时,它将创建NaN (不是一个数字)。
此外,类型化数组(ArrayBuffer/views)和Array并不相同,将类型化数组转换为普通数组会使迭代速度变慢,因为类型化数组是实际的字节缓冲区,而数组是(节点)列表。再加上转换本身的成本。
直接加进去就行了。记住除以长度之和,当然还要初始化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)
}发布于 2015-05-15 23:47:13
设置total = 0;目前它默认为未定义的。未定义+a number = NaN,NaN +a number = NaN。
https://stackoverflow.com/questions/30270242
复制相似问题