大多数搜索是与角相关的问题,但这是本机node.js。我有一个数据集数组,我进行了一个API调用,然后我想在数组[0]始终增加的数组范围内迭代。
我的功能是总和一个数组中的值或数组中传递的范围内的值:
: function sum(arr, level){
var end = parseFloat(arr[0][0]) + level;
//console.log(arr[0][0], end);
var newArr = [];
for (var i=0; parseFloat(arr[i][0]) < end; i++){
newArr.push(parseFloat(arr[i][1]));
}
return newArr.reduce((a,b) => a+b);
}
我的API调用无问题接收数组数组的数组,然后调用我的函数,该功能获取了我传递的数组未定义错误。(见下文(。这利用GDAX LIBARY ...
const Gdax = require('../node_modules/gdax');
const publicClient = new Gdax.PublicClient();
setInterval(function(){
publicClient.getProductOrderBook('ETH-USD',{ level: 3 },(error, response,
book) => {
var bidTotal = sum(book['bids'], 10);
var askTotal = sum(book['asks'], 10);
});
}, 2000);
呼叫返回以响应为例,返回数组或数组:
[ [ '922.03', '3.3889', '5be95c88-b0a9-4a85-b89f-c067a4ee2364' ],
[ '922.03', '0.01', '78183ddc-458d-4db0-96b1-a2b63381ae67' ],
[ '921.77', '0.05', '5aec1e1b-ff19-4572-a2b9-8ee6e5ad3267' ],
[ '921.7', '0.1003062', '9f73bbfe-615e-4ab3-9318-d08fd9719c81' ],
[ '921.7', '0.11206032', '6ab33d08-20eb-4832-9e13-b9ff3ed2454c' ] ]
我的总和函数可以console.log arr [0] [0],因此在for循环启动时将其定义为未定义吗?我认为这与JavaScript的异步性质有关,但我不知道为什么定义数组时它不起作用...
/home/ubuntu/workspace/gdax/server1.js:57
for (var i=0; parseFloat(arr[i][0]) < end; i++){
^
TypeError: Cannot read property '0' of undefined
您的索引,如果您只给它以这种情况结束
,我可能会比数组的实际长度更大parseFloat(arr[i][0]) < end
因此,您需要使用它们的长度作为结束的条件来迭代一系列数组。然后,您可以将循环内部的值与var end =parseFloat(arr[0][0]) + level;