JS表示定义了值但得到的循环 类型错误:无法读取未定义的属性'0'



大多数搜索是与角相关的问题,但这是本机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;

比较

相关内容

  • 没有找到相关文章

最新更新