Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从输出对象获取ADX值_Javascript_Reactjs - Fatal编程技术网

Javascript 从输出对象获取ADX值

Javascript 从输出对象获取ADX值,javascript,reactjs,Javascript,Reactjs,我这里有个问题。 所以,我正在制作这个机器人,我需要一个ADX指示器,我使用这个库得到: 代码如下所示: function updateIndicators(pair, price){ var output = {}; pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]); pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2

我这里有个问题。 所以,我正在制作这个机器人,我需要一个ADX指示器,我使用这个库得到:

代码如下所示:

function updateIndicators(pair, price){
  var output = {};
  pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]);
  pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2] , high: price[3],
    low: price[4]});

  output = pairs[pair]['adxValue'];
  console.log(output);

  findTradeOpportunity(pair, price[2]);
  pairs[pair]['prevMaValue'] = pairs[pair]['maValue']
  pairs[pair]['prevClose'] = price[2];
}
变量对的定义如下:

  for(pair of pairsArray){
    pairs[pair]={
      ma: new SMA({period : maPeriods, values :[]}),
      maValue: 0,
      prevMaValue: 0,
      prevClose: 0,
      adx: new ADX({period: adxPeriods, close:[], high:[], low:[]}),
      adxValue: {},
      long: false,
      short: false,
      stopLossPrice: 0,
      entryAmount: 0,
      entryPrice: 0
    }
  }
问题是,当我记录该输出时,nextValue对象根据我使用的库给我提供了以下信息:

{ adx: 34.906756996039285,
  pdi: 19.8213833578075,
  mdi: 36.373822501854036 }
这是完美的。但是我只想得到adx值,我不知道如何得到。 我试着做:

console.log(output.adx)
但它不明白,它在终端给了我这个:

/home/jturolla/Documents/btcbot/manager.js:73
  console.log(output.adx);
                     ^

TypeError: Cannot read property 'adx' of undefined
    at updateIndicators (/home/jturolla/Documents/btcbot/manager.js:73:22)
    at Manager.runBot (/home/jturolla/Documents/btcbot/manager.js:54:7)
    at Object.<anonymous> (/home/jturolla/Documents/btcbot/app.js:4:9)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
    at startup (internal/bootstrap/node.js:238:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
/home/jturolla/Documents/btcbot/manager.js:73
console.log(output.adx);
^
TypeError:无法读取未定义的属性“adx”
在更新指示器(/home/jturella/Documents/btcbot/manager.js:73:22)
在Manager.runBot(/home/jturolla/Documents/btcbot/Manager.js:54:7)
反对。(/home/jturolla/Documents/btcbot/app.js:4:9)
at模块编译(内部/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:713:10)
at Module.load(内部/modules/cjs/loader.js:612:32)
在tryModuleLoad(内部/modules/cjs/loader.js:551:12)
at Function.Module._load(内部/modules/cjs/loader.js:543:3)
位于Function.Module.runMain(内部/modules/cjs/loader.js:744:10)
启动时(内部/bootstrap/node.js:238:19)
在bootstrapNodeJSCore(internal/bootstrap/node.js:572:3)
需要有关访问此adx值的帮助。非常感谢。
PS:也尝试了JSON.parse(),但没有成功。

答案确实是使用

console.log(output.adx)
但首先检查它是否未定义,因此该函数现在如下所示:

function updateIndicators(pair, price){
  var output = {};
  pairs[pair]['maValue'] = pairs[pair]['ma'].nextValue(price[2]);
  pairs[pair]['adxValue'] = pairs[pair]['adx'].nextValue({close: price[2] , high: price[3],
    low: price[4]});

  output = pairs[pair]['adxValue'];
  if(output){
    console.log(output.adx)
    findTradeOpportunity(pair, price[2]);
  }


  pairs[pair]['prevMaValue'] = pairs[pair]['maValue']
  pairs[pair]['prevClose'] = price[2];
}

“但它不明白。”这到底是什么意思?计算机通常什么都不懂。编辑原始post您无法获取
console.log(output)
的日志输出,也无法获取相同值的错误。因为无论是
输出
是一个对象,还是
未定义
。不能两者兼而有之。您是否有可能多次调用该函数?我们无法真正帮助您,因为我们无法运行代码。这个错误很明显。只有你才能真正弄清楚为什么
nextValue
返回
未定义的
。是的,就是这样。比如,我多次运行该函数。我第一次运行它时,下一个值仍然没有足够的信息来生成我向您展示的输出。因此,在第一次返回undefined。如果您愿意,我可以发布整个代码,或者您可以对此进行解释,即,进行代码防御,并且仅在值未定义时使用该值进行操作,或者以某种方式修复您的实现,使其不会返回未定义的值。由于该解决方案是特定于您正在使用的库的,因此您要么自己解决,要么希望其他人熟悉它。