我有一些代码,可以在nuxt envoriment中使用给定数组计算订单。我已经创建了3个函数,每个函数都会从数组中计算一个数字,如果我console.log第一个函数给我一个真实的结果,但是连接到它的其他函数的计算结果却相似,但是当我将它们放到console.log时,它们会得出Nan错误。(数组以字符串格式出现)

我已经尝试了parseFloat()到每个可能的位置,但再次在控制台上没有数字错误

const express = require('express')
const axios = require('axios')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()

 // Import and Set Nuxt.js options
    const config = require('../nuxt.config.js')
    config.dev = !(process.env.NODE_ENV === 'production')

    let loopInterval = null

    async function start() {
      // Init Nuxt.js
      const nuxt = new Nuxt(config)

      const { host, port } = nuxt.options.server

      // Build only in dev mode
      if (config.dev) {
        const builder = new Builder(nuxt)
        await builder.build()
      } else {
        await nuxt.ready()
      }

      // Add this part
      app.get('/start', (req, res) => {
        codeLoop()
        res.send('My code loop started.')
      })

      app.get('/stop', (req, res) => {
        clearInterval(loopInterval)
        loopInterval = null
        res.send('My code loop stopped')
      })

      // Give nuxt middleware to express
      app.use(nuxt.render)

      // Listen the server
      app.listen(port, host)
      consola.ready({
        message: `Server listening on http://${host}:${port}`,
        badge: true
      })
    }
    start()
    let UsdtTrySell = [["5.45","400"],["5.44","400"],["5.43","400"]];
    let BtcUsdtSell =  [["3900","1"],["3905","1"],["3910","1"]];
    let btcTryBuy = [["21000","1"],["20950","1"],["20900","1"]];
    let UsdtOrder = 1000;

    function runMyCode() {
      consola.log('hello')
    }
    function codeLoop() {
      runMyCode()
      loopInterval = setInterval(async () => {
        function SellUsdtTryAtBtrk() {
          let inputOrder1 = UsdtOrder
          let sum = 0
          let i = 0
          for (i = 0; i < parseFloat(UsdtTrySell.length); i++) {
            if (parseFloat(UsdtTrySell[i][1]) < inputOrder1) {
              sum += UsdtTrySell[i][0] * UsdtTrySell[i][1]
              inputOrder1 -= parseFloat(UsdtTrySell[i][1])
            } else {
              return sum + inputOrder1 * parseFloat(UsdtTrySell[i][0])
            }
          }
          return ''
        }
        function BuyBtcTryAtBtrk() {
          let inputOrder2 = SellUsdtTryAtBtrk
          let sum1 = 0
          let i = 0
          for (i = 0; i < (parseFloat(btcTryBuy.length)); i++) {
            if ( parseFloat(btcTryBuy[i][0]) *  parseFloat(btcTryBuy[i][1]) <
parseFloat(inputOrder2)) {
              sum1 +=  parseFloat(btcTryBuy[i][1])
              inputOrder2 -=  parseFloat(btcTryBuy[i][0]) *
parseFloat(btcTryBuy[i][1])
            } else {
              return sum1 +  parseFloat(inputOrder2) /
parseFloat(btcTryBuy[i][0])
            }
          }
          return ''
        }
        function SellBtcUsdtAtBnnc() {
          let inputOrder3 = BuyBtcTryAtBtrk
          // const BtcUsdtSell = bnncBtcusdt.bids
          let sum = 0
          let i = 0
          for (i = 0; i < (parseFloat(BtcUsdtSell.length)); i++) {
            if (parseFloat(BtcUsdtSell[i][1]) < inputOrder3) {
              sum += BtcUsdtSell[i][0] * BtcUsdtSell[i][1]
              inputOrder3 -= parseFloat(BtcUsdtSell[i][1])
            } else {
              return sum + inputOrder3 * parseFloat(BtcUsdtSell[i][0])
            }
          }
          return ''
        }
        console.log(SellBtcUsdtAtBnnc());
      }, 2 * 1000) // Runs every 2 seconds
    }

最佳答案

您将inputOrder2inputOrder3分配给函数,而不是将它们分配给调用函数的结果。



更改此行:

let inputOrder2 = SellUsdtTryAtBtrk


...对此:

let inputOrder2 = SellUsdtTryAtBtrk();




...并更改此行:

let inputOrder3 = BuyBtcTryAtBtrk


...对此:

let inputOrder3 = BuyBtcTryAtBtrk();




...它应该工作。

关于javascript - Nuxt.js代码在从数组计算数据时给出NaN错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55202830/

10-16 21:26